catch up with development

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..034e2f0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,39 @@
+**/bin/
+**/target/
+**._trace
+**/*.log.properties
+**/git.properties
+**/.antlr-generator-*.jar
+**/target/
+**/.metadata/
+
+**/emf-gen/**/.gitignore
+**/src-gen/**/.gitignore
+**/git.properties
+**/*.java._trace
+**/*.log
+**/*.log.properties
+
+**/bin/
+**/build/
+*.class
+*.ctrl
+**/Debug/
+.DS_Store
+*.ear
+*.war
+
+**/*.actionbin
+**/*.blipbin
+**/*.chartbin
+**/*.cubebin
+**/*.datatypebin
+**/*.dtobin
+**/*.entitybin
+**/*.servicebin
+**/*.tablebin
+**/*.uibin
+**/*.uisemanticbin
+**/*.xtendbin
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index b4ef38b..a06abbf 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -16,18 +16,22 @@
 	<!-- DO NOT EDIT BELOW THIS LINE -->
         <jenkins.build.dependencies>
                 <jenkins.build.dependency>org.eclipse.osbp.bpm.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.core.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.datainterchange.api</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.eventbroker</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.fork.mihalis.opal.imageSelector.osgi</jenkins.build.dependency>
-                <jenkins.build.dependency>org.eclipse.osbp.persistence</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.preferences</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.vaaclipse</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.addons</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.datainterchange</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.functionlibrary</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.message</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.oxtype</jenkins.build.dependency>
         </jenkins.build.dependencies>
 </jenkins>
diff --git a/org.eclipse.osbp.xtext.action.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.action.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.xtext.action.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.action.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.feature/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.xtext.action.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.action.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.xtext.action.feature/feature.xml b/org.eclipse.osbp.xtext.action.feature/feature.xml
index 791b482..015f031 100644
--- a/org.eclipse.osbp.xtext.action.feature/feature.xml
+++ b/org.eclipse.osbp.xtext.action.feature/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.xtext.action.feature"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.xtext">
         
     <description>
         %description
@@ -43,6 +44,13 @@
         unpack="false"/>
         
     <plugin
+        id="org.eclipse.osbp.xtext.action.ide"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
         id="org.eclipse.osbp.xtext.action.ui"
         download-size="0"
         install-size="0"
diff --git a/org.eclipse.osbp.xtext.action.ide/.classpath b/org.eclipse.osbp.xtext.action.ide/.classpath
new file mode 100644
index 0000000..1dfa3f4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<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="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.action.ide/.project b/org.eclipse.osbp.xtext.action.ide/.project
new file mode 100644
index 0000000..37e2c0f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.action.ide</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<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>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/.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/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..5da8aa3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.xtext.action.ide/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.action.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..29ab7d2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.action.ide
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.action.ide;singleton:=true
+Bundle-Classpath: .,src/,src-gen/
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.antlr.runtime,
+ org.eclipse.xtext.xbase.ide,
+ org.eclipse.xtext.ide,
+ org.eclipse.osbp.xtext.action;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.oxtype;bundle-version="0.9.0"
+Export-Package: org.eclipse.osbp.xtext.action.ide,
+ org.eclipse.osbp.xtext.action.ide.contentassist.antlr,
+ org.eclipse.osbp.xtext.action.ide.contentassist.antlr.internal
+
diff --git a/org.eclipse.osbp.xtext.action.ide/build.properties b/org.eclipse.osbp.xtext.action.ide/build.properties
new file mode 100644
index 0000000..6ef1a59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/build.properties
@@ -0,0 +1,5 @@
+bin.includes = META-INF/,\
+				.,\
+               src/,\
+               src-gen/
+source.. = src/,src-gen/
diff --git a/org.eclipse.osbp.xtext.action.ide/pom.xml b/org.eclipse.osbp.xtext.action.ide/pom.xml
new file mode 100644
index 0000000..23420c2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.eclipse.osbp.xtext.action</groupId>
+        <artifactId>org.eclipse.osbp.xtext.action.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <artifactId>org.eclipse.osbp.xtext.action.ide</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.action.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup b/org.eclipse.osbp.xtext.action.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
new file mode 100644
index 0000000..8b73a2d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
@@ -0,0 +1 @@
+org.eclipse.osbp.xtext.action.ide.ActionDSLIdeSetup
diff --git a/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/AbstractActionDSLIdeModule.java b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/AbstractActionDSLIdeModule.java
new file mode 100644
index 0000000..88376a0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/AbstractActionDSLIdeModule.java
@@ -0,0 +1,60 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+package org.eclipse.osbp.xtext.action.ide;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+import org.eclipse.osbp.xtext.action.ide.contentassist.antlr.ActionDSLParser;
+import org.eclipse.osbp.xtext.action.ide.contentassist.antlr.internal.InternalActionDSLLexer;
+import org.eclipse.xtext.ide.LexerIdeBindings;
+import org.eclipse.xtext.ide.editor.contentassist.FQNPrefixMatcher;
+import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher;
+import org.eclipse.xtext.ide.editor.contentassist.IProposalConflictHelper;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.AntlrProposalConflictHelper;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
+import org.eclipse.xtext.xbase.ide.DefaultXbaseIdeModule;
+
+/**
+ * Manual modifications go to {@link ActionDSLIdeModule}.
+ */
+@SuppressWarnings("all")
+public abstract class AbstractActionDSLIdeModule extends DefaultXbaseIdeModule {
+
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureContentAssistLexer(Binder binder) {
+		binder.bind(Lexer.class)
+			.annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST))
+			.to(InternalActionDSLLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
+		return ActionDSLParser.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IProposalConflictHelper> bindIProposalConflictHelper() {
+		return AntlrProposalConflictHelper.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2
+	public Class<? extends IPrefixMatcher> bindIPrefixMatcher() {
+		return FQNPrefixMatcher.class;
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/ActionDSLParser.java b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/ActionDSLParser.java
new file mode 100644
index 0000000..ee443c4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/ActionDSLParser.java
@@ -0,0 +1,544 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+package org.eclipse.osbp.xtext.action.ide.contentassist.antlr;
+
+import com.google.inject.Inject;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.osbp.xtext.action.ide.contentassist.antlr.internal.InternalActionDSLParser;
+import org.eclipse.osbp.xtext.action.services.ActionDSLGrammarAccess;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser;
+
+public class ActionDSLParser extends AbstractContentAssistParser {
+
+	@Inject
+	private ActionDSLGrammarAccess grammarAccess;
+
+	private Map<AbstractElement, String> nameMappings;
+
+	@Override
+	protected InternalActionDSLParser createParser() {
+		InternalActionDSLParser result = new InternalActionDSLParser(null);
+		result.setGrammarAccess(grammarAccess);
+		return result;
+	}
+
+	@Override
+	protected String getRuleName(AbstractElement element) {
+		if (nameMappings == null) {
+			nameMappings = new HashMap<AbstractElement, String>() {
+				private static final long serialVersionUID = 1L;
+				{
+					put(grammarAccess.getActionTypeAccess().getAlternatives(), "rule__ActionType__Alternatives");
+					put(grammarAccess.getActionFunctionAccess().getAlternatives_5(), "rule__ActionFunction__Alternatives_5");
+					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2(), "rule__XImportDeclaration__Alternatives_2");
+					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3(), "rule__XImportDeclaration__Alternatives_2_0_3");
+					put(grammarAccess.getXAnnotationAccess().getAlternatives_3_1(), "rule__XAnnotation__Alternatives_3_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives(), "rule__XAnnotationElementValueOrCommaList__Alternatives");
+					put(grammarAccess.getXAnnotationElementValueAccess().getAlternatives(), "rule__XAnnotationElementValue__Alternatives");
+					put(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives(), "rule__XAnnotationOrExpression__Alternatives");
+					put(grammarAccess.getXAssignmentAccess().getAlternatives(), "rule__XAssignment__Alternatives");
+					put(grammarAccess.getOpMultiAssignAccess().getAlternatives(), "rule__OpMultiAssign__Alternatives");
+					put(grammarAccess.getOpEqualityAccess().getAlternatives(), "rule__OpEquality__Alternatives");
+					put(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1(), "rule__XRelationalExpression__Alternatives_1");
+					put(grammarAccess.getOpCompareAccess().getAlternatives(), "rule__OpCompare__Alternatives");
+					put(grammarAccess.getOpOtherAccess().getAlternatives(), "rule__OpOther__Alternatives");
+					put(grammarAccess.getOpOtherAccess().getAlternatives_5_1(), "rule__OpOther__Alternatives_5_1");
+					put(grammarAccess.getOpOtherAccess().getAlternatives_6_1(), "rule__OpOther__Alternatives_6_1");
+					put(grammarAccess.getOpAddAccess().getAlternatives(), "rule__OpAdd__Alternatives");
+					put(grammarAccess.getOpMultiAccess().getAlternatives(), "rule__OpMulti__Alternatives");
+					put(grammarAccess.getXUnaryOperationAccess().getAlternatives(), "rule__XUnaryOperation__Alternatives");
+					put(grammarAccess.getOpUnaryAccess().getAlternatives(), "rule__OpUnary__Alternatives");
+					put(grammarAccess.getOpPostfixAccess().getAlternatives(), "rule__OpPostfix__Alternatives");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1(), "rule__XMemberFeatureCall__Alternatives_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1(), "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1(), "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1(), "rule__XMemberFeatureCall__Alternatives_1_1_3_1");
+					put(grammarAccess.getXPrimaryExpressionAccess().getAlternatives(), "rule__XPrimaryExpression__Alternatives");
+					put(grammarAccess.getXLiteralAccess().getAlternatives(), "rule__XLiteral__Alternatives");
+					put(grammarAccess.getXCollectionLiteralAccess().getAlternatives(), "rule__XCollectionLiteral__Alternatives");
+					put(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2(), "rule__XSwitchExpression__Alternatives_2");
+					put(grammarAccess.getXCasePartAccess().getAlternatives_3(), "rule__XCasePart__Alternatives_3");
+					put(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives(), "rule__XExpressionOrVarDeclaration__Alternatives");
+					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1(), "rule__XVariableDeclaration__Alternatives_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2(), "rule__XVariableDeclaration__Alternatives_2");
+					put(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1(), "rule__XFeatureCall__Alternatives_3_1");
+					put(grammarAccess.getFeatureCallIDAccess().getAlternatives(), "rule__FeatureCallID__Alternatives");
+					put(grammarAccess.getIdOrSuperAccess().getAlternatives(), "rule__IdOrSuper__Alternatives");
+					put(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1(), "rule__XConstructorCall__Alternatives_4_1");
+					put(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1(), "rule__XBooleanLiteral__Alternatives_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3(), "rule__XTryCatchFinallyExpression__Alternatives_3");
+					put(grammarAccess.getNumberAccess().getAlternatives(), "rule__Number__Alternatives");
+					put(grammarAccess.getNumberAccess().getAlternatives_1_0(), "rule__Number__Alternatives_1_0");
+					put(grammarAccess.getNumberAccess().getAlternatives_1_1_1(), "rule__Number__Alternatives_1_1_1");
+					put(grammarAccess.getJvmTypeReferenceAccess().getAlternatives(), "rule__JvmTypeReference__Alternatives");
+					put(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives(), "rule__JvmArgumentTypeReference__Alternatives");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2(), "rule__JvmWildcardTypeReference__Alternatives_2");
+					put(grammarAccess.getTaskActionEnumAccess().getAlternatives(), "rule__TaskActionEnum__Alternatives");
+					put(grammarAccess.getSelectWorkloadActionEnumAccess().getAlternatives(), "rule__SelectWorkloadActionEnum__Alternatives");
+					put(grammarAccess.getDialogActionEnumAccess().getAlternatives(), "rule__DialogActionEnum__Alternatives");
+					put(grammarAccess.getReportActionEnumAccess().getAlternatives(), "rule__ReportActionEnum__Alternatives");
+					put(grammarAccess.getDatainterchangeActionEnumAccess().getAlternatives(), "rule__DatainterchangeActionEnum__Alternatives");
+					put(grammarAccess.getUIActionEnumAccess().getAlternatives(), "rule__UIActionEnum__Alternatives");
+					put(grammarAccess.getActionModelAccess().getGroup(), "rule__ActionModel__Group__0");
+					put(grammarAccess.getActionPackageAccess().getGroup(), "rule__ActionPackage__Group__0");
+					put(grammarAccess.getActionPackageAccess().getGroup_3(), "rule__ActionPackage__Group_3__0");
+					put(grammarAccess.getActionCommandAccess().getGroup(), "rule__ActionCommand__Group__0");
+					put(grammarAccess.getActionCommandAccess().getGroup_3(), "rule__ActionCommand__Group_3__0");
+					put(grammarAccess.getActionCommandAccess().getGroup_4(), "rule__ActionCommand__Group_4__0");
+					put(grammarAccess.getActionToolbarAccess().getGroup(), "rule__ActionToolbar__Group__0");
+					put(grammarAccess.getActionToolbarAccess().getGroup_3(), "rule__ActionToolbar__Group_3__0");
+					put(grammarAccess.getActionToolbarAccess().getGroup_4(), "rule__ActionToolbar__Group_4__0");
+					put(grammarAccess.getActionButtonAccess().getGroup(), "rule__ActionButton__Group__0");
+					put(grammarAccess.getActionButtonAccess().getGroup_3(), "rule__ActionButton__Group_3__0");
+					put(grammarAccess.getActionButtonAccess().getGroup_6(), "rule__ActionButton__Group_6__0");
+					put(grammarAccess.getActionTaskAccess().getGroup(), "rule__ActionTask__Group__0");
+					put(grammarAccess.getActionSelectWorkloadAccess().getGroup(), "rule__ActionSelectWorkload__Group__0");
+					put(grammarAccess.getActionDialogAccess().getGroup(), "rule__ActionDialog__Group__0");
+					put(grammarAccess.getActionReportAccess().getGroup(), "rule__ActionReport__Group__0");
+					put(grammarAccess.getActionChartAccess().getGroup(), "rule__ActionChart__Group__0");
+					put(grammarAccess.getActionWorkflowAccess().getGroup(), "rule__ActionWorkflow__Group__0");
+					put(grammarAccess.getActionDatainterchangeAccess().getGroup(), "rule__ActionDatainterchange__Group__0");
+					put(grammarAccess.getActionUIAccess().getGroup(), "rule__ActionUI__Group__0");
+					put(grammarAccess.getActionFunctionAccess().getGroup(), "rule__ActionFunction__Group__0");
+					put(grammarAccess.getActionFunctionAccess().getGroup_5_0(), "rule__ActionFunction__Group_5_0__0");
+					put(grammarAccess.getActionFunctionAccess().getGroup_5_0_2(), "rule__ActionFunction__Group_5_0_2__0");
+					put(grammarAccess.getActionFunctionAccess().getGroup_5_0_2_4(), "rule__ActionFunction__Group_5_0_2_4__0");
+					put(grammarAccess.getActionFunctionAccess().getGroup_5_1(), "rule__ActionFunction__Group_5_1__0");
+					put(grammarAccess.getActionFunctionAccess().getGroup_5_1_2(), "rule__ActionFunction__Group_5_1_2__0");
+					put(grammarAccess.getActionParameterAccess().getGroup(), "rule__ActionParameter__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup_2_0(), "rule__XImportDeclaration__Group_2_0__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup_2_3(), "rule__XImportDeclaration__Group_2_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0");
+					put(grammarAccess.getNumberAccess().getGroup_1(), "rule__Number__Group_1__0");
+					put(grammarAccess.getNumberAccess().getGroup_1_1(), "rule__Number__Group_1_1__0");
+					put(grammarAccess.getStaticQualifierAccess().getGroup(), "rule__StaticQualifier__Group__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0(), "rule__JvmTypeReference__Group_0__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1(), "rule__JvmTypeReference__Group_0_1__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0(), "rule__JvmTypeReference__Group_0_1_0__0");
+					put(grammarAccess.getArrayBracketsAccess().getGroup(), "rule__ArrayBrackets__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup(), "rule__XFunctionTypeRef__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0(), "rule__XFunctionTypeRef__Group_0__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1(), "rule__XFunctionTypeRef__Group_0_1__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1(), "rule__XFunctionTypeRef__Group_0_1_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup(), "rule__JvmParameterizedTypeReference__Group__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1(), "rule__JvmParameterizedTypeReference__Group_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2(), "rule__JvmParameterizedTypeReference__Group_1_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4(), "rule__JvmParameterizedTypeReference__Group_1_4__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup(), "rule__JvmWildcardTypeReference__Group__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0(), "rule__JvmWildcardTypeReference__Group_2_0__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1(), "rule__JvmWildcardTypeReference__Group_2_1__0");
+					put(grammarAccess.getJvmUpperBoundAccess().getGroup(), "rule__JvmUpperBound__Group__0");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getGroup(), "rule__JvmUpperBoundAnded__Group__0");
+					put(grammarAccess.getJvmLowerBoundAccess().getGroup(), "rule__JvmLowerBound__Group__0");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getGroup(), "rule__JvmLowerBoundAnded__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup(), "rule__JvmTypeParameter__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup_1(), "rule__JvmTypeParameter__Group_1__0");
+					put(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup(), "rule__QualifiedNameWithWildcard__Group__0");
+					put(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup(), "rule__QualifiedNameInStaticImport__Group__0");
+					put(grammarAccess.getActionModelAccess().getImportSectionAssignment_0(), "rule__ActionModel__ImportSectionAssignment_0");
+					put(grammarAccess.getActionModelAccess().getPackagesAssignment_1(), "rule__ActionModel__PackagesAssignment_1");
+					put(grammarAccess.getActionPackageAccess().getNameAssignment_2(), "rule__ActionPackage__NameAssignment_2");
+					put(grammarAccess.getActionPackageAccess().getCommandsAssignment_3_1(), "rule__ActionPackage__CommandsAssignment_3_1");
+					put(grammarAccess.getActionPackageAccess().getToolbarsAssignment_3_2(), "rule__ActionPackage__ToolbarsAssignment_3_2");
+					put(grammarAccess.getActionCommandAccess().getNameAssignment_2(), "rule__ActionCommand__NameAssignment_2");
+					put(grammarAccess.getActionCommandAccess().getHasDescriptionAssignment_3_0(), "rule__ActionCommand__HasDescriptionAssignment_3_0");
+					put(grammarAccess.getActionCommandAccess().getDescriptionAssignment_3_1(), "rule__ActionCommand__DescriptionAssignment_3_1");
+					put(grammarAccess.getActionCommandAccess().getHasKeyBindingAssignment_4_0(), "rule__ActionCommand__HasKeyBindingAssignment_4_0");
+					put(grammarAccess.getActionCommandAccess().getKeyBindingAssignment_4_1(), "rule__ActionCommand__KeyBindingAssignment_4_1");
+					put(grammarAccess.getActionCommandAccess().getActionTypeAssignment_5(), "rule__ActionCommand__ActionTypeAssignment_5");
+					put(grammarAccess.getActionToolbarAccess().getNameAssignment_2(), "rule__ActionToolbar__NameAssignment_2");
+					put(grammarAccess.getActionToolbarAccess().getDescriptionAssignment_3_0(), "rule__ActionToolbar__DescriptionAssignment_3_0");
+					put(grammarAccess.getActionToolbarAccess().getDescriptionValueAssignment_3_1(), "rule__ActionToolbar__DescriptionValueAssignment_3_1");
+					put(grammarAccess.getActionToolbarAccess().getActionsAssignment_4_2(), "rule__ActionToolbar__ActionsAssignment_4_2");
+					put(grammarAccess.getActionButtonAccess().getNameAssignment_2(), "rule__ActionButton__NameAssignment_2");
+					put(grammarAccess.getActionButtonAccess().getDescriptionAssignment_3_0(), "rule__ActionButton__DescriptionAssignment_3_0");
+					put(grammarAccess.getActionButtonAccess().getDescriptionValueAssignment_3_1(), "rule__ActionButton__DescriptionValueAssignment_3_1");
+					put(grammarAccess.getActionButtonAccess().getCommandAssignment_5(), "rule__ActionButton__CommandAssignment_5");
+					put(grammarAccess.getActionButtonAccess().getIconURIAssignment_6_1(), "rule__ActionButton__IconURIAssignment_6_1");
+					put(grammarAccess.getActionTaskAccess().getActionAssignment_1(), "rule__ActionTask__ActionAssignment_1");
+					put(grammarAccess.getActionSelectWorkloadAccess().getActionAssignment_1(), "rule__ActionSelectWorkload__ActionAssignment_1");
+					put(grammarAccess.getActionDialogAccess().getActionAssignment_1(), "rule__ActionDialog__ActionAssignment_1");
+					put(grammarAccess.getActionReportAccess().getActionAssignment_1(), "rule__ActionReport__ActionAssignment_1");
+					put(grammarAccess.getActionChartAccess().getActionAssignment_1(), "rule__ActionChart__ActionAssignment_1");
+					put(grammarAccess.getActionWorkflowAccess().getActionAssignment_1(), "rule__ActionWorkflow__ActionAssignment_1");
+					put(grammarAccess.getActionDatainterchangeAccess().getActionAssignment_1(), "rule__ActionDatainterchange__ActionAssignment_1");
+					put(grammarAccess.getActionDatainterchangeAccess().getDataRefAssignment_2(), "rule__ActionDatainterchange__DataRefAssignment_2");
+					put(grammarAccess.getActionUIAccess().getActionAssignment_1(), "rule__ActionUI__ActionAssignment_1");
+					put(grammarAccess.getActionFunctionAccess().getActionGroupAssignment_2(), "rule__ActionFunction__ActionGroupAssignment_2");
+					put(grammarAccess.getActionFunctionAccess().getCanExecuteAssignment_4(), "rule__ActionFunction__CanExecuteAssignment_4");
+					put(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateAssignment_5_0_0(), "rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0");
+					put(grammarAccess.getActionFunctionAccess().getExecuteImmediateAssignment_5_0_1(), "rule__ActionFunction__ExecuteImmediateAssignment_5_0_1");
+					put(grammarAccess.getActionFunctionAccess().getHasMessageAssignment_5_0_2_0(), "rule__ActionFunction__HasMessageAssignment_5_0_2_0");
+					put(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_0_2_1(), "rule__ActionFunction__MessageCategoryAssignment_5_0_2_1");
+					put(grammarAccess.getActionFunctionAccess().getOnFailMessageAssignment_5_0_2_3(), "rule__ActionFunction__OnFailMessageAssignment_5_0_2_3");
+					put(grammarAccess.getActionFunctionAccess().getHasSuccessMessageAssignment_5_0_2_4_0(), "rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0");
+					put(grammarAccess.getActionFunctionAccess().getOnSuccessMessageAssignment_5_0_2_4_1(), "rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1");
+					put(grammarAccess.getActionFunctionAccess().getHasExecuteLaterAssignment_5_1_0(), "rule__ActionFunction__HasExecuteLaterAssignment_5_1_0");
+					put(grammarAccess.getActionFunctionAccess().getExecuteLaterAssignment_5_1_1(), "rule__ActionFunction__ExecuteLaterAssignment_5_1_1");
+					put(grammarAccess.getActionFunctionAccess().getHasStartedMessageAssignment_5_1_2_0(), "rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0");
+					put(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_1_2_1(), "rule__ActionFunction__MessageCategoryAssignment_5_1_2_1");
+					put(grammarAccess.getActionFunctionAccess().getOnStartedMessageAssignment_5_1_2_3(), "rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3");
+					put(grammarAccess.getActionParameterAccess().getParameterAssignment_2(), "rule__ActionParameter__ParameterAssignment_2");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0(), "rule__XImportDeclaration__StaticAssignment_2_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1(), "rule__XImportDeclaration__ExtensionAssignment_2_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_2_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_2_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1(), "rule__XImportDeclaration__ImportedTypeAssignment_2_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_2_2");
+					put(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0(), "rule__XImportDeclaration__FqnImportAssignment_2_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1(), "rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+			
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+	}
+
+	public ActionDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+
+	public void setGrammarAccess(ActionDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/PartialActionDSLContentAssistParser.java b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/PartialActionDSLContentAssistParser.java
new file mode 100644
index 0000000..c439f9a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/PartialActionDSLContentAssistParser.java
@@ -0,0 +1,47 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+package org.eclipse.osbp.xtext.action.ide.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+
+public class PartialActionDSLContentAssistParser extends ActionDSLParser implements IPartialEditingContentAssistParser {
+
+	private AbstractRule rule;
+
+	@Override
+	public void initializeFor(AbstractRule rule) {
+		this.rule = rule;
+	}
+
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		if (rule == null || rule.eIsProxy())
+			return Collections.emptyList();
+		String methodName = "entryRule" + rule.getName();
+		PolymorphicDispatcher<Collection<FollowElement>> dispatcher = 
+			new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
+		dispatcher.invoke();
+		return parser.getFollowElements();
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSL.g b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSL.g
new file mode 100644
index 0000000..ce3eb6c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSL.g
@@ -0,0 +1,22466 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+grammar InternalActionDSL;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.action.ide.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.osbp.xtext.action.ide.contentassist.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.osbp.xtext.action.services.ActionDSLGrammarAccess;
+
+}
+@parser::members {
+	private ActionDSLGrammarAccess grammarAccess;
+
+	public void setGrammarAccess(ActionDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+
+	@Override
+	protected Grammar getGrammar() {
+		return grammarAccess.getGrammar();
+	}
+
+	@Override
+	protected String getValueForTokenName(String tokenName) {
+		return tokenName;
+	}
+}
+
+// Entry rule entryRuleActionModel
+entryRuleActionModel
+:
+{ before(grammarAccess.getActionModelRule()); }
+	 ruleActionModel
+{ after(grammarAccess.getActionModelRule()); } 
+	 EOF 
+;
+
+// Rule ActionModel
+ruleActionModel 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionModelAccess().getGroup()); }
+		(rule__ActionModel__Group__0)
+		{ after(grammarAccess.getActionModelAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionPackage
+entryRuleActionPackage
+:
+{ before(grammarAccess.getActionPackageRule()); }
+	 ruleActionPackage
+{ after(grammarAccess.getActionPackageRule()); } 
+	 EOF 
+;
+
+// Rule ActionPackage
+ruleActionPackage 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionPackageAccess().getGroup()); }
+		(rule__ActionPackage__Group__0)
+		{ after(grammarAccess.getActionPackageAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionCommand
+entryRuleActionCommand
+:
+{ before(grammarAccess.getActionCommandRule()); }
+	 ruleActionCommand
+{ after(grammarAccess.getActionCommandRule()); } 
+	 EOF 
+;
+
+// Rule ActionCommand
+ruleActionCommand 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionCommandAccess().getGroup()); }
+		(rule__ActionCommand__Group__0)
+		{ after(grammarAccess.getActionCommandAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionToolbar
+entryRuleActionToolbar
+:
+{ before(grammarAccess.getActionToolbarRule()); }
+	 ruleActionToolbar
+{ after(grammarAccess.getActionToolbarRule()); } 
+	 EOF 
+;
+
+// Rule ActionToolbar
+ruleActionToolbar 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionToolbarAccess().getGroup()); }
+		(rule__ActionToolbar__Group__0)
+		{ after(grammarAccess.getActionToolbarAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionButton
+entryRuleActionButton
+:
+{ before(grammarAccess.getActionButtonRule()); }
+	 ruleActionButton
+{ after(grammarAccess.getActionButtonRule()); } 
+	 EOF 
+;
+
+// Rule ActionButton
+ruleActionButton 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionButtonAccess().getGroup()); }
+		(rule__ActionButton__Group__0)
+		{ after(grammarAccess.getActionButtonAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionType
+entryRuleActionType
+:
+{ before(grammarAccess.getActionTypeRule()); }
+	 ruleActionType
+{ after(grammarAccess.getActionTypeRule()); } 
+	 EOF 
+;
+
+// Rule ActionType
+ruleActionType 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionTypeAccess().getAlternatives()); }
+		(rule__ActionType__Alternatives)
+		{ after(grammarAccess.getActionTypeAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionTask
+entryRuleActionTask
+:
+{ before(grammarAccess.getActionTaskRule()); }
+	 ruleActionTask
+{ after(grammarAccess.getActionTaskRule()); } 
+	 EOF 
+;
+
+// Rule ActionTask
+ruleActionTask 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionTaskAccess().getGroup()); }
+		(rule__ActionTask__Group__0)
+		{ after(grammarAccess.getActionTaskAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionSelectWorkload
+entryRuleActionSelectWorkload
+:
+{ before(grammarAccess.getActionSelectWorkloadRule()); }
+	 ruleActionSelectWorkload
+{ after(grammarAccess.getActionSelectWorkloadRule()); } 
+	 EOF 
+;
+
+// Rule ActionSelectWorkload
+ruleActionSelectWorkload 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionSelectWorkloadAccess().getGroup()); }
+		(rule__ActionSelectWorkload__Group__0)
+		{ after(grammarAccess.getActionSelectWorkloadAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionDialog
+entryRuleActionDialog
+:
+{ before(grammarAccess.getActionDialogRule()); }
+	 ruleActionDialog
+{ after(grammarAccess.getActionDialogRule()); } 
+	 EOF 
+;
+
+// Rule ActionDialog
+ruleActionDialog 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionDialogAccess().getGroup()); }
+		(rule__ActionDialog__Group__0)
+		{ after(grammarAccess.getActionDialogAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionReport
+entryRuleActionReport
+:
+{ before(grammarAccess.getActionReportRule()); }
+	 ruleActionReport
+{ after(grammarAccess.getActionReportRule()); } 
+	 EOF 
+;
+
+// Rule ActionReport
+ruleActionReport 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionReportAccess().getGroup()); }
+		(rule__ActionReport__Group__0)
+		{ after(grammarAccess.getActionReportAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionChart
+entryRuleActionChart
+:
+{ before(grammarAccess.getActionChartRule()); }
+	 ruleActionChart
+{ after(grammarAccess.getActionChartRule()); } 
+	 EOF 
+;
+
+// Rule ActionChart
+ruleActionChart 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionChartAccess().getGroup()); }
+		(rule__ActionChart__Group__0)
+		{ after(grammarAccess.getActionChartAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionWorkflow
+entryRuleActionWorkflow
+:
+{ before(grammarAccess.getActionWorkflowRule()); }
+	 ruleActionWorkflow
+{ after(grammarAccess.getActionWorkflowRule()); } 
+	 EOF 
+;
+
+// Rule ActionWorkflow
+ruleActionWorkflow 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionWorkflowAccess().getGroup()); }
+		(rule__ActionWorkflow__Group__0)
+		{ after(grammarAccess.getActionWorkflowAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionDatainterchange
+entryRuleActionDatainterchange
+:
+{ before(grammarAccess.getActionDatainterchangeRule()); }
+	 ruleActionDatainterchange
+{ after(grammarAccess.getActionDatainterchangeRule()); } 
+	 EOF 
+;
+
+// Rule ActionDatainterchange
+ruleActionDatainterchange 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionDatainterchangeAccess().getGroup()); }
+		(rule__ActionDatainterchange__Group__0)
+		{ after(grammarAccess.getActionDatainterchangeAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionUI
+entryRuleActionUI
+:
+{ before(grammarAccess.getActionUIRule()); }
+	 ruleActionUI
+{ after(grammarAccess.getActionUIRule()); } 
+	 EOF 
+;
+
+// Rule ActionUI
+ruleActionUI 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionUIAccess().getGroup()); }
+		(rule__ActionUI__Group__0)
+		{ after(grammarAccess.getActionUIAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleActionFunction
+entryRuleActionFunction
+:
+{ before(grammarAccess.getActionFunctionRule()); }
+	 ruleActionFunction
+{ after(grammarAccess.getActionFunctionRule()); } 
+	 EOF 
+;
+
+// Rule ActionFunction
+ruleActionFunction 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getGroup()); }
+		(rule__ActionFunction__Group__0)
+		{ after(grammarAccess.getActionFunctionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleTRANSLATABLEID
+entryRuleTRANSLATABLEID
+:
+{ before(grammarAccess.getTRANSLATABLEIDRule()); }
+	 ruleTRANSLATABLEID
+{ after(grammarAccess.getTRANSLATABLEIDRule()); } 
+	 EOF 
+;
+
+// Rule TRANSLATABLEID
+ruleTRANSLATABLEID 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); }
+		RULE_ID
+		{ after(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleTRANSLATABLESTRING
+entryRuleTRANSLATABLESTRING
+:
+{ before(grammarAccess.getTRANSLATABLESTRINGRule()); }
+	 ruleTRANSLATABLESTRING
+{ after(grammarAccess.getTRANSLATABLESTRINGRule()); } 
+	 EOF 
+;
+
+// Rule TRANSLATABLESTRING
+ruleTRANSLATABLESTRING 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); }
+		RULE_STRING
+		{ after(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration
+:
+{ before(grammarAccess.getXImportDeclarationRule()); }
+	 ruleXImportDeclaration
+{ after(grammarAccess.getXImportDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+		(rule__XImportDeclaration__Group__0)
+		{ after(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotation
+entryRuleXAnnotation
+:
+{ before(grammarAccess.getXAnnotationRule()); }
+	 ruleXAnnotation
+{ after(grammarAccess.getXAnnotationRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotation
+ruleXAnnotation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getGroup()); }
+		(rule__XAnnotation__Group__0)
+		{ after(grammarAccess.getXAnnotationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationElementValuePair
+entryRuleXAnnotationElementValuePair
+:
+{ before(grammarAccess.getXAnnotationElementValuePairRule()); }
+	 ruleXAnnotationElementValuePair
+{ after(grammarAccess.getXAnnotationElementValuePairRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+		(rule__XAnnotationElementValuePair__Group__0)
+		{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList
+:
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	 ruleXAnnotationElementValueOrCommaList
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+		(rule__XAnnotationElementValueOrCommaList__Alternatives)
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationElementValue
+entryRuleXAnnotationElementValue
+:
+{ before(grammarAccess.getXAnnotationElementValueRule()); }
+	 ruleXAnnotationElementValue
+{ after(grammarAccess.getXAnnotationElementValueRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+		(rule__XAnnotationElementValue__Alternatives)
+		{ after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAnnotationOrExpression
+entryRuleXAnnotationOrExpression
+:
+{ before(grammarAccess.getXAnnotationOrExpressionRule()); }
+	 ruleXAnnotationOrExpression
+{ after(grammarAccess.getXAnnotationOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+		(rule__XAnnotationOrExpression__Alternatives)
+		{ after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression
+:
+{ before(grammarAccess.getXExpressionRule()); }
+	 ruleXExpression
+{ after(grammarAccess.getXExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XExpression
+ruleXExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+		ruleXAssignment
+		{ after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment
+:
+{ before(grammarAccess.getXAssignmentRule()); }
+	 ruleXAssignment
+{ after(grammarAccess.getXAssignmentRule()); } 
+	 EOF 
+;
+
+// Rule XAssignment
+ruleXAssignment 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+		(rule__XAssignment__Alternatives)
+		{ after(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpSingleAssign
+entryRuleOpSingleAssign
+:
+{ before(grammarAccess.getOpSingleAssignRule()); }
+	 ruleOpSingleAssign
+{ after(grammarAccess.getOpSingleAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+		'='
+		{ after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpMultiAssign
+entryRuleOpMultiAssign
+:
+{ before(grammarAccess.getOpMultiAssignRule()); }
+	 ruleOpMultiAssign
+{ after(grammarAccess.getOpMultiAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+		(rule__OpMultiAssign__Alternatives)
+		{ after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression
+:
+{ before(grammarAccess.getXOrExpressionRule()); }
+	 ruleXOrExpression
+{ after(grammarAccess.getXOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOrExpression
+ruleXOrExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXOrExpressionAccess().getGroup()); }
+		(rule__XOrExpression__Group__0)
+		{ after(grammarAccess.getXOrExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpOr
+entryRuleOpOr
+:
+{ before(grammarAccess.getOpOrRule()); }
+	 ruleOpOr
+{ after(grammarAccess.getOpOrRule()); } 
+	 EOF 
+;
+
+// Rule OpOr
+ruleOpOr 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+		'||'
+		{ after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAndExpression
+entryRuleXAndExpression
+:
+{ before(grammarAccess.getXAndExpressionRule()); }
+	 ruleXAndExpression
+{ after(grammarAccess.getXAndExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAndExpression
+ruleXAndExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAndExpressionAccess().getGroup()); }
+		(rule__XAndExpression__Group__0)
+		{ after(grammarAccess.getXAndExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpAnd
+entryRuleOpAnd
+:
+{ before(grammarAccess.getOpAndRule()); }
+	 ruleOpAnd
+{ after(grammarAccess.getOpAndRule()); } 
+	 EOF 
+;
+
+// Rule OpAnd
+ruleOpAnd 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+		'&&'
+		{ after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXEqualityExpression
+entryRuleXEqualityExpression
+:
+{ before(grammarAccess.getXEqualityExpressionRule()); }
+	 ruleXEqualityExpression
+{ after(grammarAccess.getXEqualityExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+		(rule__XEqualityExpression__Group__0)
+		{ after(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpEquality
+entryRuleOpEquality
+:
+{ before(grammarAccess.getOpEqualityRule()); }
+	 ruleOpEquality
+{ after(grammarAccess.getOpEqualityRule()); } 
+	 EOF 
+;
+
+// Rule OpEquality
+ruleOpEquality 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+		(rule__OpEquality__Alternatives)
+		{ after(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression
+:
+{ before(grammarAccess.getXRelationalExpressionRule()); }
+	 ruleXRelationalExpression
+{ after(grammarAccess.getXRelationalExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+		(rule__XRelationalExpression__Group__0)
+		{ after(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpCompare
+entryRuleOpCompare
+:
+{ before(grammarAccess.getOpCompareRule()); }
+	 ruleOpCompare
+{ after(grammarAccess.getOpCompareRule()); } 
+	 EOF 
+;
+
+// Rule OpCompare
+ruleOpCompare 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpCompareAccess().getAlternatives()); }
+		(rule__OpCompare__Alternatives)
+		{ after(grammarAccess.getOpCompareAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression
+:
+{ before(grammarAccess.getXOtherOperatorExpressionRule()); }
+	 ruleXOtherOperatorExpression
+{ after(grammarAccess.getXOtherOperatorExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+		(rule__XOtherOperatorExpression__Group__0)
+		{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpOther
+entryRuleOpOther
+:
+{ before(grammarAccess.getOpOtherRule()); }
+	 ruleOpOther
+{ after(grammarAccess.getOpOtherRule()); } 
+	 EOF 
+;
+
+// Rule OpOther
+ruleOpOther 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpOtherAccess().getAlternatives()); }
+		(rule__OpOther__Alternatives)
+		{ after(grammarAccess.getOpOtherAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression
+:
+{ before(grammarAccess.getXAdditiveExpressionRule()); }
+	 ruleXAdditiveExpression
+{ after(grammarAccess.getXAdditiveExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+		(rule__XAdditiveExpression__Group__0)
+		{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpAdd
+entryRuleOpAdd
+:
+{ before(grammarAccess.getOpAddRule()); }
+	 ruleOpAdd
+{ after(grammarAccess.getOpAddRule()); } 
+	 EOF 
+;
+
+// Rule OpAdd
+ruleOpAdd 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpAddAccess().getAlternatives()); }
+		(rule__OpAdd__Alternatives)
+		{ after(grammarAccess.getOpAddAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression
+:
+{ before(grammarAccess.getXMultiplicativeExpressionRule()); }
+	 ruleXMultiplicativeExpression
+{ after(grammarAccess.getXMultiplicativeExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+		(rule__XMultiplicativeExpression__Group__0)
+		{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpMulti
+entryRuleOpMulti
+:
+{ before(grammarAccess.getOpMultiRule()); }
+	 ruleOpMulti
+{ after(grammarAccess.getOpMultiRule()); } 
+	 EOF 
+;
+
+// Rule OpMulti
+ruleOpMulti 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpMultiAccess().getAlternatives()); }
+		(rule__OpMulti__Alternatives)
+		{ after(grammarAccess.getOpMultiAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation
+:
+{ before(grammarAccess.getXUnaryOperationRule()); }
+	 ruleXUnaryOperation
+{ after(grammarAccess.getXUnaryOperationRule()); } 
+	 EOF 
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+		(rule__XUnaryOperation__Alternatives)
+		{ after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpUnary
+entryRuleOpUnary
+:
+{ before(grammarAccess.getOpUnaryRule()); }
+	 ruleOpUnary
+{ after(grammarAccess.getOpUnaryRule()); } 
+	 EOF 
+;
+
+// Rule OpUnary
+ruleOpUnary 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+		(rule__OpUnary__Alternatives)
+		{ after(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression
+:
+{ before(grammarAccess.getXCastedExpressionRule()); }
+	 ruleXCastedExpression
+{ after(grammarAccess.getXCastedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+		(rule__XCastedExpression__Group__0)
+		{ after(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation
+:
+{ before(grammarAccess.getXPostfixOperationRule()); }
+	 ruleXPostfixOperation
+{ after(grammarAccess.getXPostfixOperationRule()); } 
+	 EOF 
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+		(rule__XPostfixOperation__Group__0)
+		{ after(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleOpPostfix
+entryRuleOpPostfix
+:
+{ before(grammarAccess.getOpPostfixRule()); }
+	 ruleOpPostfix
+{ after(grammarAccess.getOpPostfixRule()); } 
+	 EOF 
+;
+
+// Rule OpPostfix
+ruleOpPostfix 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+		(rule__OpPostfix__Alternatives)
+		{ after(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall
+:
+{ before(grammarAccess.getXMemberFeatureCallRule()); }
+	 ruleXMemberFeatureCall
+{ after(grammarAccess.getXMemberFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+		(rule__XMemberFeatureCall__Group__0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXPrimaryExpression
+entryRuleXPrimaryExpression
+:
+{ before(grammarAccess.getXPrimaryExpressionRule()); }
+	 ruleXPrimaryExpression
+{ after(grammarAccess.getXPrimaryExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+		(rule__XPrimaryExpression__Alternatives)
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral
+:
+{ before(grammarAccess.getXLiteralRule()); }
+	 ruleXLiteral
+{ after(grammarAccess.getXLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XLiteral
+ruleXLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXLiteralAccess().getAlternatives()); }
+		(rule__XLiteral__Alternatives)
+		{ after(grammarAccess.getXLiteralAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral
+:
+{ before(grammarAccess.getXCollectionLiteralRule()); }
+	 ruleXCollectionLiteral
+{ after(grammarAccess.getXCollectionLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+		(rule__XCollectionLiteral__Alternatives)
+		{ after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral
+:
+{ before(grammarAccess.getXSetLiteralRule()); }
+	 ruleXSetLiteral
+{ after(grammarAccess.getXSetLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXSetLiteralAccess().getGroup()); }
+		(rule__XSetLiteral__Group__0)
+		{ after(grammarAccess.getXSetLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXListLiteral
+entryRuleXListLiteral
+:
+{ before(grammarAccess.getXListLiteralRule()); }
+	 ruleXListLiteral
+{ after(grammarAccess.getXListLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XListLiteral
+ruleXListLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXListLiteralAccess().getGroup()); }
+		(rule__XListLiteral__Group__0)
+		{ after(grammarAccess.getXListLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXClosure
+entryRuleXClosure
+:
+{ before(grammarAccess.getXClosureRule()); }
+	 ruleXClosure
+{ after(grammarAccess.getXClosureRule()); } 
+	 EOF 
+;
+
+// Rule XClosure
+ruleXClosure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXClosureAccess().getGroup()); }
+		(rule__XClosure__Group__0)
+		{ after(grammarAccess.getXClosureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXExpressionInClosure
+entryRuleXExpressionInClosure
+:
+{ before(grammarAccess.getXExpressionInClosureRule()); }
+	 ruleXExpressionInClosure
+{ after(grammarAccess.getXExpressionInClosureRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+		(rule__XExpressionInClosure__Group__0)
+		{ after(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXShortClosure
+entryRuleXShortClosure
+:
+{ before(grammarAccess.getXShortClosureRule()); }
+	 ruleXShortClosure
+{ after(grammarAccess.getXShortClosureRule()); } 
+	 EOF 
+;
+
+// Rule XShortClosure
+ruleXShortClosure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXShortClosureAccess().getGroup()); }
+		(rule__XShortClosure__Group__0)
+		{ after(grammarAccess.getXShortClosureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXParenthesizedExpression
+entryRuleXParenthesizedExpression
+:
+{ before(grammarAccess.getXParenthesizedExpressionRule()); }
+	 ruleXParenthesizedExpression
+{ after(grammarAccess.getXParenthesizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+		(rule__XParenthesizedExpression__Group__0)
+		{ after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression
+:
+{ before(grammarAccess.getXIfExpressionRule()); }
+	 ruleXIfExpression
+{ after(grammarAccess.getXIfExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XIfExpression
+ruleXIfExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXIfExpressionAccess().getGroup()); }
+		(rule__XIfExpression__Group__0)
+		{ after(grammarAccess.getXIfExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression
+:
+{ before(grammarAccess.getXSwitchExpressionRule()); }
+	 ruleXSwitchExpression
+{ after(grammarAccess.getXSwitchExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+		(rule__XSwitchExpression__Group__0)
+		{ after(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart
+:
+{ before(grammarAccess.getXCasePartRule()); }
+	 ruleXCasePart
+{ after(grammarAccess.getXCasePartRule()); } 
+	 EOF 
+;
+
+// Rule XCasePart
+ruleXCasePart 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCasePartAccess().getGroup()); }
+		(rule__XCasePart__Group__0)
+		{ after(grammarAccess.getXCasePartAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression
+:
+{ before(grammarAccess.getXForLoopExpressionRule()); }
+	 ruleXForLoopExpression
+{ after(grammarAccess.getXForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+		(rule__XForLoopExpression__Group__0)
+		{ after(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression
+:
+{ before(grammarAccess.getXBasicForLoopExpressionRule()); }
+	 ruleXBasicForLoopExpression
+{ after(grammarAccess.getXBasicForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+		(rule__XBasicForLoopExpression__Group__0)
+		{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression
+:
+{ before(grammarAccess.getXWhileExpressionRule()); }
+	 ruleXWhileExpression
+{ after(grammarAccess.getXWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+		(rule__XWhileExpression__Group__0)
+		{ after(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression
+:
+{ before(grammarAccess.getXDoWhileExpressionRule()); }
+	 ruleXDoWhileExpression
+{ after(grammarAccess.getXDoWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+		(rule__XDoWhileExpression__Group__0)
+		{ after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression
+:
+{ before(grammarAccess.getXBlockExpressionRule()); }
+	 ruleXBlockExpression
+{ after(grammarAccess.getXBlockExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+		(rule__XBlockExpression__Group__0)
+		{ after(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration
+:
+{ before(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	 ruleXExpressionOrVarDeclaration
+{ after(grammarAccess.getXExpressionOrVarDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+		(rule__XExpressionOrVarDeclaration__Alternatives)
+		{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration
+:
+{ before(grammarAccess.getXVariableDeclarationRule()); }
+	 ruleXVariableDeclaration
+{ after(grammarAccess.getXVariableDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+		(rule__XVariableDeclaration__Group__0)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter
+:
+{ before(grammarAccess.getJvmFormalParameterRule()); }
+	 ruleJvmFormalParameter
+{ after(grammarAccess.getJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+		(rule__JvmFormalParameter__Group__0)
+		{ after(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter
+:
+{ before(grammarAccess.getFullJvmFormalParameterRule()); }
+	 ruleFullJvmFormalParameter
+{ after(grammarAccess.getFullJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+		(rule__FullJvmFormalParameter__Group__0)
+		{ after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall
+:
+{ before(grammarAccess.getXFeatureCallRule()); }
+	 ruleXFeatureCall
+{ after(grammarAccess.getXFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getGroup()); }
+		(rule__XFeatureCall__Group__0)
+		{ after(grammarAccess.getXFeatureCallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID
+:
+{ before(grammarAccess.getFeatureCallIDRule()); }
+	 ruleFeatureCallID
+{ after(grammarAccess.getFeatureCallIDRule()); } 
+	 EOF 
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+		(rule__FeatureCallID__Alternatives)
+		{ after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper
+:
+{ before(grammarAccess.getIdOrSuperRule()); }
+	 ruleIdOrSuper
+{ after(grammarAccess.getIdOrSuperRule()); } 
+	 EOF 
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+		(rule__IdOrSuper__Alternatives)
+		{ after(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall
+:
+{ before(grammarAccess.getXConstructorCallRule()); }
+	 ruleXConstructorCall
+{ after(grammarAccess.getXConstructorCallRule()); } 
+	 EOF 
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getGroup()); }
+		(rule__XConstructorCall__Group__0)
+		{ after(grammarAccess.getXConstructorCallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral
+:
+{ before(grammarAccess.getXBooleanLiteralRule()); }
+	 ruleXBooleanLiteral
+{ after(grammarAccess.getXBooleanLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+		(rule__XBooleanLiteral__Group__0)
+		{ after(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral
+:
+{ before(grammarAccess.getXNullLiteralRule()); }
+	 ruleXNullLiteral
+{ after(grammarAccess.getXNullLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXNullLiteralAccess().getGroup()); }
+		(rule__XNullLiteral__Group__0)
+		{ after(grammarAccess.getXNullLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral
+:
+{ before(grammarAccess.getXNumberLiteralRule()); }
+	 ruleXNumberLiteral
+{ after(grammarAccess.getXNumberLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+		(rule__XNumberLiteral__Group__0)
+		{ after(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral
+:
+{ before(grammarAccess.getXStringLiteralRule()); }
+	 ruleXStringLiteral
+{ after(grammarAccess.getXStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXStringLiteralAccess().getGroup()); }
+		(rule__XStringLiteral__Group__0)
+		{ after(grammarAccess.getXStringLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral
+:
+{ before(grammarAccess.getXTypeLiteralRule()); }
+	 ruleXTypeLiteral
+{ after(grammarAccess.getXTypeLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+		(rule__XTypeLiteral__Group__0)
+		{ after(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression
+:
+{ before(grammarAccess.getXThrowExpressionRule()); }
+	 ruleXThrowExpression
+{ after(grammarAccess.getXThrowExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+		(rule__XThrowExpression__Group__0)
+		{ after(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression
+:
+{ before(grammarAccess.getXReturnExpressionRule()); }
+	 ruleXReturnExpression
+{ after(grammarAccess.getXReturnExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+		(rule__XReturnExpression__Group__0)
+		{ after(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression
+:
+{ before(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 ruleXTryCatchFinallyExpression
+{ after(grammarAccess.getXTryCatchFinallyExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+		(rule__XTryCatchFinallyExpression__Group__0)
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression
+:
+{ before(grammarAccess.getXSynchronizedExpressionRule()); }
+	 ruleXSynchronizedExpression
+{ after(grammarAccess.getXSynchronizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+		(rule__XSynchronizedExpression__Group__0)
+		{ after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause
+:
+{ before(grammarAccess.getXCatchClauseRule()); }
+	 ruleXCatchClause
+{ after(grammarAccess.getXCatchClauseRule()); } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXCatchClauseAccess().getGroup()); }
+		(rule__XCatchClause__Group__0)
+		{ after(grammarAccess.getXCatchClauseAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName
+:
+{ before(grammarAccess.getQualifiedNameRule()); }
+	 ruleQualifiedName
+{ after(grammarAccess.getQualifiedNameRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedName
+ruleQualifiedName 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getQualifiedNameAccess().getGroup()); }
+		(rule__QualifiedName__Group__0)
+		{ after(grammarAccess.getQualifiedNameAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleNumber
+entryRuleNumber
+@init { 
+	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+}
+:
+{ before(grammarAccess.getNumberRule()); }
+	 ruleNumber
+{ after(grammarAccess.getNumberRule()); } 
+	 EOF 
+;
+finally {
+	myHiddenTokenState.restore();
+}
+
+// Rule Number
+ruleNumber 
+	@init {
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getNumberAccess().getAlternatives()); }
+		(rule__Number__Alternatives)
+		{ after(grammarAccess.getNumberAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+	myHiddenTokenState.restore();
+}
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference
+:
+{ before(grammarAccess.getJvmTypeReferenceRule()); }
+	 ruleJvmTypeReference
+{ after(grammarAccess.getJvmTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+		(rule__JvmTypeReference__Alternatives)
+		{ after(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets
+:
+{ before(grammarAccess.getArrayBracketsRule()); }
+	 ruleArrayBrackets
+{ after(grammarAccess.getArrayBracketsRule()); } 
+	 EOF 
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getArrayBracketsAccess().getGroup()); }
+		(rule__ArrayBrackets__Group__0)
+		{ after(grammarAccess.getArrayBracketsAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef
+:
+{ before(grammarAccess.getXFunctionTypeRefRule()); }
+	 ruleXFunctionTypeRef
+{ after(grammarAccess.getXFunctionTypeRefRule()); } 
+	 EOF 
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+		(rule__XFunctionTypeRef__Group__0)
+		{ after(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference
+:
+{ before(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+	 ruleJvmParameterizedTypeReference
+{ after(grammarAccess.getJvmParameterizedTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+		(rule__JvmParameterizedTypeReference__Group__0)
+		{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference
+:
+{ before(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+	 ruleJvmArgumentTypeReference
+{ after(grammarAccess.getJvmArgumentTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+		(rule__JvmArgumentTypeReference__Alternatives)
+		{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference
+:
+{ before(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+	 ruleJvmWildcardTypeReference
+{ after(grammarAccess.getJvmWildcardTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+		(rule__JvmWildcardTypeReference__Group__0)
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmUpperBound
+entryRuleJvmUpperBound
+:
+{ before(grammarAccess.getJvmUpperBoundRule()); }
+	 ruleJvmUpperBound
+{ after(grammarAccess.getJvmUpperBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+		(rule__JvmUpperBound__Group__0)
+		{ after(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmUpperBoundAnded
+entryRuleJvmUpperBoundAnded
+:
+{ before(grammarAccess.getJvmUpperBoundAndedRule()); }
+	 ruleJvmUpperBoundAnded
+{ after(grammarAccess.getJvmUpperBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+		(rule__JvmUpperBoundAnded__Group__0)
+		{ after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmLowerBound
+entryRuleJvmLowerBound
+:
+{ before(grammarAccess.getJvmLowerBoundRule()); }
+	 ruleJvmLowerBound
+{ after(grammarAccess.getJvmLowerBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+		(rule__JvmLowerBound__Group__0)
+		{ after(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleJvmLowerBoundAnded
+entryRuleJvmLowerBoundAnded
+:
+{ before(grammarAccess.getJvmLowerBoundAndedRule()); }
+	 ruleJvmLowerBoundAnded
+{ after(grammarAccess.getJvmLowerBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+		(rule__JvmLowerBoundAnded__Group__0)
+		{ after(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleQualifiedNameWithWildcard
+entryRuleQualifiedNameWithWildcard
+:
+{ before(grammarAccess.getQualifiedNameWithWildcardRule()); }
+	 ruleQualifiedNameWithWildcard
+{ after(grammarAccess.getQualifiedNameWithWildcardRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+		(rule__QualifiedNameWithWildcard__Group__0)
+		{ after(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleValidID
+entryRuleValidID
+:
+{ before(grammarAccess.getValidIDRule()); }
+	 ruleValidID
+{ after(grammarAccess.getValidIDRule()); } 
+	 EOF 
+;
+
+// Rule ValidID
+ruleValidID 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+		RULE_ID
+		{ after(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleXImportSection
+entryRuleXImportSection
+:
+{ before(grammarAccess.getXImportSectionRule()); }
+	 ruleXImportSection
+{ after(grammarAccess.getXImportSectionRule()); } 
+	 EOF 
+;
+
+// Rule XImportSection
+ruleXImportSection 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		(
+			{ before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+			(rule__XImportSection__ImportDeclarationsAssignment)
+			{ after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+		)
+		(
+			{ before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+			(rule__XImportSection__ImportDeclarationsAssignment)*
+			{ after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); }
+		)
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleQualifiedNameInStaticImport
+entryRuleQualifiedNameInStaticImport
+:
+{ before(grammarAccess.getQualifiedNameInStaticImportRule()); }
+	 ruleQualifiedNameInStaticImport
+{ after(grammarAccess.getQualifiedNameInStaticImportRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		(
+			{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+			(rule__QualifiedNameInStaticImport__Group__0)
+			{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+		)
+		(
+			{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+			(rule__QualifiedNameInStaticImport__Group__0)*
+			{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+		)
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule TaskActionEnum
+ruleTaskActionEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getAlternatives()); }
+		(rule__TaskActionEnum__Alternatives)
+		{ after(grammarAccess.getTaskActionEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule SelectWorkloadActionEnum
+ruleSelectWorkloadActionEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSelectWorkloadActionEnumAccess().getAlternatives()); }
+		(rule__SelectWorkloadActionEnum__Alternatives)
+		{ after(grammarAccess.getSelectWorkloadActionEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule DialogActionEnum
+ruleDialogActionEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getDialogActionEnumAccess().getAlternatives()); }
+		(rule__DialogActionEnum__Alternatives)
+		{ after(grammarAccess.getDialogActionEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule ReportActionEnum
+ruleReportActionEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getReportActionEnumAccess().getAlternatives()); }
+		(rule__ReportActionEnum__Alternatives)
+		{ after(grammarAccess.getReportActionEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule ChartActionEnum
+ruleChartActionEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration()); }
+		('Download')
+		{ after(grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule WorkflowActionEnum
+ruleWorkflowActionEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration()); }
+		('Start')
+		{ after(grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule DatainterchangeActionEnum
+ruleDatainterchangeActionEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getDatainterchangeActionEnumAccess().getAlternatives()); }
+		(rule__DatainterchangeActionEnum__Alternatives)
+		{ after(grammarAccess.getDatainterchangeActionEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule UIActionEnum
+ruleUIActionEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getUIActionEnumAccess().getAlternatives()); }
+		(rule__UIActionEnum__Alternatives)
+		{ after(grammarAccess.getUIActionEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionType__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionTypeAccess().getActionTaskParserRuleCall_0()); }
+		ruleActionTask
+		{ after(grammarAccess.getActionTypeAccess().getActionTaskParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getActionTypeAccess().getActionSelectWorkloadParserRuleCall_1()); }
+		ruleActionSelectWorkload
+		{ after(grammarAccess.getActionTypeAccess().getActionSelectWorkloadParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getActionTypeAccess().getActionDialogParserRuleCall_2()); }
+		ruleActionDialog
+		{ after(grammarAccess.getActionTypeAccess().getActionDialogParserRuleCall_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getActionTypeAccess().getActionReportParserRuleCall_3()); }
+		ruleActionReport
+		{ after(grammarAccess.getActionTypeAccess().getActionReportParserRuleCall_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getActionTypeAccess().getActionChartParserRuleCall_4()); }
+		ruleActionChart
+		{ after(grammarAccess.getActionTypeAccess().getActionChartParserRuleCall_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getActionTypeAccess().getActionWorkflowParserRuleCall_5()); }
+		ruleActionWorkflow
+		{ after(grammarAccess.getActionTypeAccess().getActionWorkflowParserRuleCall_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getActionTypeAccess().getActionFunctionParserRuleCall_6()); }
+		ruleActionFunction
+		{ after(grammarAccess.getActionTypeAccess().getActionFunctionParserRuleCall_6()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getActionTypeAccess().getActionDatainterchangeParserRuleCall_7()); }
+		ruleActionDatainterchange
+		{ after(grammarAccess.getActionTypeAccess().getActionDatainterchangeParserRuleCall_7()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getActionTypeAccess().getActionUIParserRuleCall_8()); }
+		ruleActionUI
+		{ after(grammarAccess.getActionTypeAccess().getActionUIParserRuleCall_8()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Alternatives_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getGroup_5_0()); }
+		(rule__ActionFunction__Group_5_0__0)
+		{ after(grammarAccess.getActionFunctionAccess().getGroup_5_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getGroup_5_1()); }
+		(rule__ActionFunction__Group_5_1__0)
+		{ after(grammarAccess.getActionFunctionAccess().getGroup_5_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); }
+		(rule__XImportDeclaration__Group_2_0__0)
+		{ after(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); }
+		(rule__XImportDeclaration__ImportedTypeAssignment_2_1)
+		{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); }
+		(rule__XImportDeclaration__ImportedNamespaceAssignment_2_2)
+		{ after(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); }
+		(rule__XImportDeclaration__Group_2_3__0)
+		{ after(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Alternatives_2_0_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); }
+		(rule__XImportDeclaration__WildcardAssignment_2_0_3_0)
+		{ after(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); }
+		(rule__XImportDeclaration__MemberNameAssignment_2_0_3_1)
+		{ after(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Alternatives_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
+		(rule__XAnnotation__Group_3_1_0__0)
+		{ after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
+		(rule__XAnnotation__ValueAssignment_3_1_1)
+		{ after(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
+		(rule__XAnnotationElementValueOrCommaList__Group_0__0)
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
+		(rule__XAnnotationElementValueOrCommaList__Group_1__0)
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
+		(rule__XAnnotationElementValue__Group_0__0)
+		{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
+		ruleXAnnotationOrExpression
+		{ after(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationOrExpression__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
+		ruleXAnnotation
+		{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
+		ruleXExpression
+		{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getGroup_0()); }
+		(rule__XAssignment__Group_0__0)
+		{ after(grammarAccess.getXAssignmentAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getGroup_1()); }
+		(rule__XAssignment__Group_1__0)
+		{ after(grammarAccess.getXAssignmentAccess().getGroup_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
+		'+='
+		{ after(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
+		'-='
+		{ after(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
+		'*='
+		{ after(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
+		'/='
+		{ after(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
+		'%='
+		{ after(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
+		(rule__OpMultiAssign__Group_5__0)
+		{ after(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
+		(rule__OpMultiAssign__Group_6__0)
+		{ after(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpEquality__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
+		'=='
+		{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
+		'!='
+		{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
+		'==='
+		{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
+		'!=='
+		{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Alternatives_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
+		(rule__XRelationalExpression__Group_1_0__0)
+		{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
+		(rule__XRelationalExpression__Group_1_1__0)
+		{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpCompare__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
+		'>='
+		{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpCompareAccess().getGroup_1()); }
+		(rule__OpCompare__Group_1__0)
+		{ after(grammarAccess.getOpCompareAccess().getGroup_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
+		'>'
+		{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
+		'<'
+		{ after(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
+		'->'
+		{ after(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
+		'..<'
+		{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_2()); }
+		(rule__OpOther__Group_2__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
+		'..'
+		{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
+		'=>'
+		{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_5()); }
+		(rule__OpOther__Group_5__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_6()); }
+		(rule__OpOther__Group_6__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_6()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
+		'<>'
+		{ after(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
+		'?:'
+		{ after(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives_5_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
+		(rule__OpOther__Group_5_1_0__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
+		'>'
+		{ after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives_6_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
+		(rule__OpOther__Group_6_1_0__0)
+		{ after(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
+		'<'
+		{ after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
+		'=>'
+		{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpAdd__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
+		'+'
+		{ after(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
+		'-'
+		{ after(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMulti__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
+		'*'
+		{ after(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
+		'**'
+		{ after(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
+		'/'
+		{ after(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
+		'%'
+		{ after(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
+		(rule__XUnaryOperation__Group_0__0)
+		{ after(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
+		ruleXCastedExpression
+		{ after(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpUnary__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
+		'!'
+		{ after(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
+		'-'
+		{ after(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
+		'+'
+		{ after(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpPostfix__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
+		'++'
+		{ after(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
+		'--'
+		{ after(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
+		(rule__XMemberFeatureCall__Group_1_0__0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
+		(rule__XMemberFeatureCall__Group_1_1__0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
+		'.'
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
+		(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
+		'.'
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
+		(rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
+		(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_1_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
+		(rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
+		(rule__XMemberFeatureCall__Group_1_1_3_1_1__0)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPrimaryExpression__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
+		ruleXConstructorCall
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
+		ruleXBlockExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
+		ruleXSwitchExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
+		(ruleXSynchronizedExpression)
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
+		ruleXFeatureCall
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
+		ruleXLiteral
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
+		ruleXIfExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
+		(ruleXForLoopExpression)
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
+		ruleXBasicForLoopExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
+		ruleXWhileExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
+		ruleXDoWhileExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
+		ruleXThrowExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
+		ruleXReturnExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
+		ruleXTryCatchFinallyExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
+		ruleXParenthesizedExpression
+		{ after(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XLiteral__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
+		ruleXCollectionLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
+		(ruleXClosure)
+		{ after(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
+		ruleXBooleanLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
+		ruleXNumberLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
+		ruleXNullLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
+		ruleXStringLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
+		ruleXTypeLiteral
+		{ after(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCollectionLiteral__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
+		ruleXSetLiteral
+		{ after(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
+		ruleXListLiteral
+		{ after(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
+		(rule__XSwitchExpression__Group_2_0__0)
+		{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
+		(rule__XSwitchExpression__Group_2_1__0)
+		{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
+		(rule__XCasePart__Group_3_0__0)
+		{ after(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
+		(rule__XCasePart__FallThroughAssignment_3_1)
+		{ after(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionOrVarDeclaration__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
+		ruleXVariableDeclaration
+		{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
+		ruleXExpression
+		{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Alternatives_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
+		(rule__XVariableDeclaration__WriteableAssignment_1_0)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
+		'val'
+		{ after(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
+		(rule__XVariableDeclaration__Group_2_0__0)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
+		(rule__XVariableDeclaration__NameAssignment_2_1)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Alternatives_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
+		(rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0)
+		{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
+		(rule__XFeatureCall__Group_3_1_1__0)
+		{ after(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FeatureCallID__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
+		ruleValidID
+		{ after(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
+		'extends'
+		{ after(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
+		'static'
+		{ after(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
+		'import'
+		{ after(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
+		'extension'
+		{ after(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IdOrSuper__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
+		ruleFeatureCallID
+		{ after(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
+		'super'
+		{ after(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Alternatives_4_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
+		(rule__XConstructorCall__ArgumentsAssignment_4_1_0)
+		{ after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
+		(rule__XConstructorCall__Group_4_1_1__0)
+		{ after(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBooleanLiteral__Alternatives_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
+		'false'
+		{ after(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
+		(rule__XBooleanLiteral__IsTrueAssignment_1_1)
+		{ after(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
+		(rule__XTryCatchFinallyExpression__Group_3_0__0)
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
+		(rule__XTryCatchFinallyExpression__Group_3_1__0)
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
+		RULE_HEX
+		{ after(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getNumberAccess().getGroup_1()); }
+		(rule__Number__Group_1__0)
+		{ after(grammarAccess.getNumberAccess().getGroup_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
+		RULE_INT
+		{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
+		RULE_DECIMAL
+		{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
+		RULE_INT
+		{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
+		RULE_DECIMAL
+		{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
+		(rule__JvmTypeReference__Group_0__0)
+		{ after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
+		ruleXFunctionTypeRef
+		{ after(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmArgumentTypeReference__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
+		ruleJvmWildcardTypeReference
+		{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
+		(rule__JvmWildcardTypeReference__Group_2_0__0)
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
+		(rule__JvmWildcardTypeReference__Group_2_1__0)
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TaskActionEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0()); }
+		('Claim')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1()); }
+		('Start')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2()); }
+		('Stop')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3()); }
+		('Release')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4()); }
+		('Suspend')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5()); }
+		('Resume')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6()); }
+		('Skip')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7()); }
+		('Complete')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8()); }
+		('Delegate')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9()); }
+		('Forward')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10()); }
+		('Fail')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11()); }
+		('Register')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12()); }
+		('Remove')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13()); }
+		('Activate')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14()); }
+		('Exit')
+		{ after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SelectWorkloadActionEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0()); }
+		('RemoveAll')
+		{ after(grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1()); }
+		('AddAll')
+		{ after(grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DialogActionEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0()); }
+		('New')
+		{ after(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1()); }
+		('Save')
+		{ after(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2()); }
+		('Delete')
+		{ after(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3()); }
+		('Cancel')
+		{ after(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ReportActionEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0()); }
+		('PrintOnServer')
+		{ after(grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1()); }
+		('Download')
+		{ after(grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DatainterchangeActionEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0()); }
+		('Import')
+		{ after(grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1()); }
+		('Export')
+		{ after(grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UIActionEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getUIActionEnumAccess().getNEXT_PARTEnumLiteralDeclaration_0()); }
+		('NextPart')
+		{ after(grammarAccess.getUIActionEnumAccess().getNEXT_PARTEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getUIActionEnumAccess().getPREVIOUS_PARTEnumLiteralDeclaration_1()); }
+		('PreviousPart')
+		{ after(grammarAccess.getUIActionEnumAccess().getPREVIOUS_PARTEnumLiteralDeclaration_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionModel__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionModel__Group__0__Impl
+	rule__ActionModel__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionModel__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionModelAccess().getImportSectionAssignment_0()); }
+	(rule__ActionModel__ImportSectionAssignment_0)?
+	{ after(grammarAccess.getActionModelAccess().getImportSectionAssignment_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionModel__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionModel__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionModel__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionModelAccess().getPackagesAssignment_1()); }
+	(rule__ActionModel__PackagesAssignment_1)*
+	{ after(grammarAccess.getActionModelAccess().getPackagesAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionPackage__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionPackage__Group__0__Impl
+	rule__ActionPackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionPackageAccess().getActionPackageAction_0()); }
+	()
+	{ after(grammarAccess.getActionPackageAccess().getActionPackageAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionPackage__Group__1__Impl
+	rule__ActionPackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionPackageAccess().getPackageKeyword_1()); }
+	'package'
+	{ after(grammarAccess.getActionPackageAccess().getPackageKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionPackage__Group__2__Impl
+	rule__ActionPackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionPackageAccess().getNameAssignment_2()); }
+	(rule__ActionPackage__NameAssignment_2)
+	{ after(grammarAccess.getActionPackageAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionPackage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionPackageAccess().getGroup_3()); }
+	(rule__ActionPackage__Group_3__0)?
+	{ after(grammarAccess.getActionPackageAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionPackage__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionPackage__Group_3__0__Impl
+	rule__ActionPackage__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+	'{'
+	{ after(grammarAccess.getActionPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionPackage__Group_3__1__Impl
+	rule__ActionPackage__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionPackageAccess().getCommandsAssignment_3_1()); }
+	(rule__ActionPackage__CommandsAssignment_3_1)*
+	{ after(grammarAccess.getActionPackageAccess().getCommandsAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionPackage__Group_3__2__Impl
+	rule__ActionPackage__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group_3__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionPackageAccess().getToolbarsAssignment_3_2()); }
+	(rule__ActionPackage__ToolbarsAssignment_3_2)*
+	{ after(grammarAccess.getActionPackageAccess().getToolbarsAssignment_3_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group_3__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionPackage__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__Group_3__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+	'}'
+	{ after(grammarAccess.getActionPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionCommand__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group__0__Impl
+	rule__ActionCommand__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getActionCommandAction_0()); }
+	()
+	{ after(grammarAccess.getActionCommandAccess().getActionCommandAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group__1__Impl
+	rule__ActionCommand__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getCommandKeyword_1()); }
+	'command'
+	{ after(grammarAccess.getActionCommandAccess().getCommandKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group__2__Impl
+	rule__ActionCommand__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getNameAssignment_2()); }
+	(rule__ActionCommand__NameAssignment_2)
+	{ after(grammarAccess.getActionCommandAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group__3__Impl
+	rule__ActionCommand__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getGroup_3()); }
+	(rule__ActionCommand__Group_3__0)?
+	{ after(grammarAccess.getActionCommandAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group__4__Impl
+	rule__ActionCommand__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getGroup_4()); }
+	(rule__ActionCommand__Group_4__0)?
+	{ after(grammarAccess.getActionCommandAccess().getGroup_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getActionTypeAssignment_5()); }
+	(rule__ActionCommand__ActionTypeAssignment_5)
+	{ after(grammarAccess.getActionCommandAccess().getActionTypeAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionCommand__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group_3__0__Impl
+	rule__ActionCommand__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getHasDescriptionAssignment_3_0()); }
+	(rule__ActionCommand__HasDescriptionAssignment_3_0)
+	{ after(grammarAccess.getActionCommandAccess().getHasDescriptionAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getDescriptionAssignment_3_1()); }
+	(rule__ActionCommand__DescriptionAssignment_3_1)
+	{ after(grammarAccess.getActionCommandAccess().getDescriptionAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionCommand__Group_4__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group_4__0__Impl
+	rule__ActionCommand__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group_4__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getHasKeyBindingAssignment_4_0()); }
+	(rule__ActionCommand__HasKeyBindingAssignment_4_0)
+	{ after(grammarAccess.getActionCommandAccess().getHasKeyBindingAssignment_4_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group_4__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionCommand__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__Group_4__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionCommandAccess().getKeyBindingAssignment_4_1()); }
+	(rule__ActionCommand__KeyBindingAssignment_4_1)
+	{ after(grammarAccess.getActionCommandAccess().getKeyBindingAssignment_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionToolbar__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group__0__Impl
+	rule__ActionToolbar__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getActionToolbarAction_0()); }
+	()
+	{ after(grammarAccess.getActionToolbarAccess().getActionToolbarAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group__1__Impl
+	rule__ActionToolbar__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getToolbarKeyword_1()); }
+	'toolbar'
+	{ after(grammarAccess.getActionToolbarAccess().getToolbarKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group__2__Impl
+	rule__ActionToolbar__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getNameAssignment_2()); }
+	(rule__ActionToolbar__NameAssignment_2)
+	{ after(grammarAccess.getActionToolbarAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group__3__Impl
+	rule__ActionToolbar__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getGroup_3()); }
+	(rule__ActionToolbar__Group_3__0)?
+	{ after(grammarAccess.getActionToolbarAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getGroup_4()); }
+	(rule__ActionToolbar__Group_4__0)?
+	{ after(grammarAccess.getActionToolbarAccess().getGroup_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionToolbar__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group_3__0__Impl
+	rule__ActionToolbar__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getDescriptionAssignment_3_0()); }
+	(rule__ActionToolbar__DescriptionAssignment_3_0)
+	{ after(grammarAccess.getActionToolbarAccess().getDescriptionAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getDescriptionValueAssignment_3_1()); }
+	(rule__ActionToolbar__DescriptionValueAssignment_3_1)
+	{ after(grammarAccess.getActionToolbarAccess().getDescriptionValueAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionToolbar__Group_4__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group_4__0__Impl
+	rule__ActionToolbar__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_4__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getItemsKeyword_4_0()); }
+	'items'
+	{ after(grammarAccess.getActionToolbarAccess().getItemsKeyword_4_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_4__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group_4__1__Impl
+	rule__ActionToolbar__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_4__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getLeftCurlyBracketKeyword_4_1()); }
+	'{'
+	{ after(grammarAccess.getActionToolbarAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_4__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group_4__2__Impl
+	rule__ActionToolbar__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_4__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getActionsAssignment_4_2()); }
+	(rule__ActionToolbar__ActionsAssignment_4_2)*
+	{ after(grammarAccess.getActionToolbarAccess().getActionsAssignment_4_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_4__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionToolbar__Group_4__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__Group_4__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionToolbarAccess().getRightCurlyBracketKeyword_4_3()); }
+	'}'
+	{ after(grammarAccess.getActionToolbarAccess().getRightCurlyBracketKeyword_4_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionButton__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group__0__Impl
+	rule__ActionButton__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getActionButtonAction_0()); }
+	()
+	{ after(grammarAccess.getActionButtonAccess().getActionButtonAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group__1__Impl
+	rule__ActionButton__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getItemKeyword_1()); }
+	'item'
+	{ after(grammarAccess.getActionButtonAccess().getItemKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group__2__Impl
+	rule__ActionButton__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getNameAssignment_2()); }
+	(rule__ActionButton__NameAssignment_2)
+	{ after(grammarAccess.getActionButtonAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group__3__Impl
+	rule__ActionButton__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getGroup_3()); }
+	(rule__ActionButton__Group_3__0)?
+	{ after(grammarAccess.getActionButtonAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group__4__Impl
+	rule__ActionButton__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getCommandKeyword_4()); }
+	'command'
+	{ after(grammarAccess.getActionButtonAccess().getCommandKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group__5__Impl
+	rule__ActionButton__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getCommandAssignment_5()); }
+	(rule__ActionButton__CommandAssignment_5)
+	{ after(grammarAccess.getActionButtonAccess().getCommandAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getGroup_6()); }
+	(rule__ActionButton__Group_6__0)?
+	{ after(grammarAccess.getActionButtonAccess().getGroup_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionButton__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group_3__0__Impl
+	rule__ActionButton__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getDescriptionAssignment_3_0()); }
+	(rule__ActionButton__DescriptionAssignment_3_0)
+	{ after(grammarAccess.getActionButtonAccess().getDescriptionAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getDescriptionValueAssignment_3_1()); }
+	(rule__ActionButton__DescriptionValueAssignment_3_1)
+	{ after(grammarAccess.getActionButtonAccess().getDescriptionValueAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionButton__Group_6__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group_6__0__Impl
+	rule__ActionButton__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group_6__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getIconKeyword_6_0()); }
+	'icon'
+	{ after(grammarAccess.getActionButtonAccess().getIconKeyword_6_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group_6__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionButton__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__Group_6__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionButtonAccess().getIconURIAssignment_6_1()); }
+	(rule__ActionButton__IconURIAssignment_6_1)
+	{ after(grammarAccess.getActionButtonAccess().getIconURIAssignment_6_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionTask__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionTask__Group__0__Impl
+	rule__ActionTask__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionTask__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionTaskAccess().getTaskActionKeyword_0()); }
+	'taskAction'
+	{ after(grammarAccess.getActionTaskAccess().getTaskActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionTask__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionTask__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionTask__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionTaskAccess().getActionAssignment_1()); }
+	(rule__ActionTask__ActionAssignment_1)
+	{ after(grammarAccess.getActionTaskAccess().getActionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionSelectWorkload__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionSelectWorkload__Group__0__Impl
+	rule__ActionSelectWorkload__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionSelectWorkload__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionSelectWorkloadAccess().getSelectWorkloadActionKeyword_0()); }
+	'selectWorkloadAction'
+	{ after(grammarAccess.getActionSelectWorkloadAccess().getSelectWorkloadActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionSelectWorkload__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionSelectWorkload__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionSelectWorkload__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionSelectWorkloadAccess().getActionAssignment_1()); }
+	(rule__ActionSelectWorkload__ActionAssignment_1)
+	{ after(grammarAccess.getActionSelectWorkloadAccess().getActionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionDialog__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionDialog__Group__0__Impl
+	rule__ActionDialog__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDialog__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionDialogAccess().getDialogActionKeyword_0()); }
+	'dialogAction'
+	{ after(grammarAccess.getActionDialogAccess().getDialogActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDialog__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionDialog__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDialog__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionDialogAccess().getActionAssignment_1()); }
+	(rule__ActionDialog__ActionAssignment_1)
+	{ after(grammarAccess.getActionDialogAccess().getActionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionReport__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionReport__Group__0__Impl
+	rule__ActionReport__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionReport__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionReportAccess().getReportActionKeyword_0()); }
+	'reportAction'
+	{ after(grammarAccess.getActionReportAccess().getReportActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionReport__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionReport__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionReport__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionReportAccess().getActionAssignment_1()); }
+	(rule__ActionReport__ActionAssignment_1)
+	{ after(grammarAccess.getActionReportAccess().getActionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionChart__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionChart__Group__0__Impl
+	rule__ActionChart__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionChart__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionChartAccess().getChartActionKeyword_0()); }
+	'chartAction'
+	{ after(grammarAccess.getActionChartAccess().getChartActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionChart__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionChart__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionChart__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionChartAccess().getActionAssignment_1()); }
+	(rule__ActionChart__ActionAssignment_1)
+	{ after(grammarAccess.getActionChartAccess().getActionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionWorkflow__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionWorkflow__Group__0__Impl
+	rule__ActionWorkflow__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionWorkflow__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionWorkflowAccess().getWorkflowActionKeyword_0()); }
+	'workflowAction'
+	{ after(grammarAccess.getActionWorkflowAccess().getWorkflowActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionWorkflow__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionWorkflow__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionWorkflow__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionWorkflowAccess().getActionAssignment_1()); }
+	(rule__ActionWorkflow__ActionAssignment_1)
+	{ after(grammarAccess.getActionWorkflowAccess().getActionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionDatainterchange__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionDatainterchange__Group__0__Impl
+	rule__ActionDatainterchange__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDatainterchange__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionDatainterchangeAccess().getDatainterchangeActionKeyword_0()); }
+	'datainterchangeAction'
+	{ after(grammarAccess.getActionDatainterchangeAccess().getDatainterchangeActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDatainterchange__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionDatainterchange__Group__1__Impl
+	rule__ActionDatainterchange__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDatainterchange__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionDatainterchangeAccess().getActionAssignment_1()); }
+	(rule__ActionDatainterchange__ActionAssignment_1)
+	{ after(grammarAccess.getActionDatainterchangeAccess().getActionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDatainterchange__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionDatainterchange__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDatainterchange__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionDatainterchangeAccess().getDataRefAssignment_2()); }
+	(rule__ActionDatainterchange__DataRefAssignment_2)
+	{ after(grammarAccess.getActionDatainterchangeAccess().getDataRefAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionUI__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionUI__Group__0__Impl
+	rule__ActionUI__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionUI__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionUIAccess().getUserinterfaceActionKeyword_0()); }
+	'userinterfaceAction'
+	{ after(grammarAccess.getActionUIAccess().getUserinterfaceActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionUI__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionUI__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionUI__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionUIAccess().getActionAssignment_1()); }
+	(rule__ActionUI__ActionAssignment_1)
+	{ after(grammarAccess.getActionUIAccess().getActionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionFunction__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group__0__Impl
+	rule__ActionFunction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getFunctionalActionKeyword_0()); }
+	'functionalAction'
+	{ after(grammarAccess.getActionFunctionAccess().getFunctionalActionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group__1__Impl
+	rule__ActionFunction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getGroupKeyword_1()); }
+	'group'
+	{ after(grammarAccess.getActionFunctionAccess().getGroupKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group__2__Impl
+	rule__ActionFunction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getActionGroupAssignment_2()); }
+	(rule__ActionFunction__ActionGroupAssignment_2)
+	{ after(grammarAccess.getActionFunctionAccess().getActionGroupAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group__3__Impl
+	rule__ActionFunction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getCanExecuteKeyword_3()); }
+	'canExecute'
+	{ after(grammarAccess.getActionFunctionAccess().getCanExecuteKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group__4__Impl
+	rule__ActionFunction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getCanExecuteAssignment_4()); }
+	(rule__ActionFunction__CanExecuteAssignment_4)
+	{ after(grammarAccess.getActionFunctionAccess().getCanExecuteAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getAlternatives_5()); }
+	(rule__ActionFunction__Alternatives_5)
+	{ after(grammarAccess.getActionFunctionAccess().getAlternatives_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionFunction__Group_5_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0__0__Impl
+	rule__ActionFunction__Group_5_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateAssignment_5_0_0()); }
+	(rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0)
+	{ after(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateAssignment_5_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0__1__Impl
+	rule__ActionFunction__Group_5_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getExecuteImmediateAssignment_5_0_1()); }
+	(rule__ActionFunction__ExecuteImmediateAssignment_5_0_1)
+	{ after(grammarAccess.getActionFunctionAccess().getExecuteImmediateAssignment_5_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getGroup_5_0_2()); }
+	(rule__ActionFunction__Group_5_0_2__0)?
+	{ after(grammarAccess.getActionFunctionAccess().getGroup_5_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionFunction__Group_5_0_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0_2__0__Impl
+	rule__ActionFunction__Group_5_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getHasMessageAssignment_5_0_2_0()); }
+	(rule__ActionFunction__HasMessageAssignment_5_0_2_0)
+	{ after(grammarAccess.getActionFunctionAccess().getHasMessageAssignment_5_0_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0_2__1__Impl
+	rule__ActionFunction__Group_5_0_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_0_2_1()); }
+	(rule__ActionFunction__MessageCategoryAssignment_5_0_2_1)
+	{ after(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_0_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0_2__2__Impl
+	rule__ActionFunction__Group_5_0_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getOnFailMessageKeyword_5_0_2_2()); }
+	'onFailMessage'
+	{ after(grammarAccess.getActionFunctionAccess().getOnFailMessageKeyword_5_0_2_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0_2__3__Impl
+	rule__ActionFunction__Group_5_0_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getOnFailMessageAssignment_5_0_2_3()); }
+	(rule__ActionFunction__OnFailMessageAssignment_5_0_2_3)
+	{ after(grammarAccess.getActionFunctionAccess().getOnFailMessageAssignment_5_0_2_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getGroup_5_0_2_4()); }
+	(rule__ActionFunction__Group_5_0_2_4__0)?
+	{ after(grammarAccess.getActionFunctionAccess().getGroup_5_0_2_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionFunction__Group_5_0_2_4__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0_2_4__0__Impl
+	rule__ActionFunction__Group_5_0_2_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2_4__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getHasSuccessMessageAssignment_5_0_2_4_0()); }
+	(rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0)
+	{ after(grammarAccess.getActionFunctionAccess().getHasSuccessMessageAssignment_5_0_2_4_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2_4__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_0_2_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_0_2_4__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getOnSuccessMessageAssignment_5_0_2_4_1()); }
+	(rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1)
+	{ after(grammarAccess.getActionFunctionAccess().getOnSuccessMessageAssignment_5_0_2_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionFunction__Group_5_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_1__0__Impl
+	rule__ActionFunction__Group_5_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getHasExecuteLaterAssignment_5_1_0()); }
+	(rule__ActionFunction__HasExecuteLaterAssignment_5_1_0)
+	{ after(grammarAccess.getActionFunctionAccess().getHasExecuteLaterAssignment_5_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_1__1__Impl
+	rule__ActionFunction__Group_5_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getExecuteLaterAssignment_5_1_1()); }
+	(rule__ActionFunction__ExecuteLaterAssignment_5_1_1)
+	{ after(grammarAccess.getActionFunctionAccess().getExecuteLaterAssignment_5_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getGroup_5_1_2()); }
+	(rule__ActionFunction__Group_5_1_2__0)?
+	{ after(grammarAccess.getActionFunctionAccess().getGroup_5_1_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionFunction__Group_5_1_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_1_2__0__Impl
+	rule__ActionFunction__Group_5_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getHasStartedMessageAssignment_5_1_2_0()); }
+	(rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0)
+	{ after(grammarAccess.getActionFunctionAccess().getHasStartedMessageAssignment_5_1_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_1_2__1__Impl
+	rule__ActionFunction__Group_5_1_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_1_2_1()); }
+	(rule__ActionFunction__MessageCategoryAssignment_5_1_2_1)
+	{ after(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_1_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_1_2__2__Impl
+	rule__ActionFunction__Group_5_1_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1_2__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getOnStartedMessageKeyword_5_1_2_2()); }
+	'onStartedMessage'
+	{ after(grammarAccess.getActionFunctionAccess().getOnStartedMessageKeyword_5_1_2_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1_2__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ActionFunction__Group_5_1_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__Group_5_1_2__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getActionFunctionAccess().getOnStartedMessageAssignment_5_1_2_3()); }
+	(rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3)
+	{ after(grammarAccess.getActionFunctionAccess().getOnStartedMessageAssignment_5_1_2_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XImportDeclaration__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group__0__Impl
+	rule__XImportDeclaration__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); }
+	()
+	{ after(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group__1__Impl
+	rule__XImportDeclaration__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); }
+	'import'
+	{ after(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group__2__Impl
+	rule__XImportDeclaration__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); }
+	(rule__XImportDeclaration__Alternatives_2)
+	{ after(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); }
+	(';')?
+	{ after(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XImportDeclaration__Group_2_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_0__0__Impl
+	rule__XImportDeclaration__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); }
+	(rule__XImportDeclaration__StaticAssignment_2_0_0)
+	{ after(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_0__1__Impl
+	rule__XImportDeclaration__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); }
+	(rule__XImportDeclaration__ExtensionAssignment_2_0_1)?
+	{ after(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_0__2__Impl
+	rule__XImportDeclaration__Group_2_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); }
+	(rule__XImportDeclaration__ImportedTypeAssignment_2_0_2)
+	{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_0__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); }
+	(rule__XImportDeclaration__Alternatives_2_0_3)
+	{ after(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XImportDeclaration__Group_2_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_3__0__Impl
+	rule__XImportDeclaration__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); }
+	(rule__XImportDeclaration__FqnImportAssignment_2_3_0)
+	{ after(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XImportDeclaration__Group_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Group_2_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); }
+	(rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1)
+	{ after(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group__0__Impl
+	rule__XAnnotation__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); }
+	()
+	{ after(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group__1__Impl
+	rule__XAnnotation__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); }
+	'@'
+	{ after(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group__2__Impl
+	rule__XAnnotation__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); }
+	(rule__XAnnotation__AnnotationTypeAssignment_2)
+	{ after(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getGroup_3()); }
+	(rule__XAnnotation__Group_3__0)?
+	{ after(grammarAccess.getXAnnotationAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3__0__Impl
+	rule__XAnnotation__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); }
+	('(')
+	{ after(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3__1__Impl
+	rule__XAnnotation__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); }
+	(rule__XAnnotation__Alternatives_3_1)?
+	{ after(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); }
+	')'
+	{ after(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3_1_0__0__Impl
+	rule__XAnnotation__Group_3_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); }
+	(rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0)
+	{ after(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3_1_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); }
+	(rule__XAnnotation__Group_3_1_0_1__0)*
+	{ after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3_1_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3_1_0_1__0__Impl
+	rule__XAnnotation__Group_3_1_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); }
+	','
+	{ after(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotation__Group_3_1_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); }
+	(rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1)
+	{ after(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValuePair__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group__0__Impl
+	rule__XAnnotationElementValuePair__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); }
+	(rule__XAnnotationElementValuePair__Group_0__0)
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); }
+	(rule__XAnnotationElementValuePair__ValueAssignment_1)
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValuePair__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); }
+	(rule__XAnnotationElementValuePair__Group_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValuePair__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group_0_0__0__Impl
+	rule__XAnnotationElementValuePair__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); }
+	(rule__XAnnotationElementValuePair__ElementAssignment_0_0_0)
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); }
+	'='
+	{ after(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_0_1__0)?
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); }
+	']'
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); }
+	()
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); }
+	'#'
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+	'['
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); }
+	(rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0)*
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); }
+	','
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); }
+	(rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); }
+	ruleXAnnotationOrExpression
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); }
+	(rule__XAnnotationElementValueOrCommaList__Group_1_1__0)?
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); }
+	()
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+		(rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0)
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+	)
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+		(rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0)*
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+	)
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); }
+	','
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); }
+	(rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1)
+	{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0__0__Impl
+	rule__XAnnotationElementValue__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); }
+	(rule__XAnnotationElementValue__Group_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0__1__Impl
+	rule__XAnnotationElementValue__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); }
+	(rule__XAnnotationElementValue__Group_0_1__0)?
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); }
+	']'
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); }
+	(rule__XAnnotationElementValue__Group_0_0_0__0)
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_0_0__0__Impl
+	rule__XAnnotationElementValue__Group_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); }
+	()
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_0_0__1__Impl
+	rule__XAnnotationElementValue__Group_0_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); }
+	'#'
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+	'['
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_1__0__Impl
+	rule__XAnnotationElementValue__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); }
+	(rule__XAnnotationElementValue__ElementsAssignment_0_1_0)
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); }
+	(rule__XAnnotationElementValue__Group_0_1_1__0)*
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_1_1__0__Impl
+	rule__XAnnotationElementValue__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); }
+	','
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); }
+	(rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1)
+	{ after(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_0__0__Impl
+	rule__XAssignment__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); }
+	()
+	{ after(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_0__1__Impl
+	rule__XAssignment__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); }
+	(rule__XAssignment__FeatureAssignment_0_1)
+	{ after(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_0__2__Impl
+	rule__XAssignment__Group_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); }
+	ruleOpSingleAssign
+	{ after(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); }
+	(rule__XAssignment__ValueAssignment_0_3)
+	{ after(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1__0__Impl
+	rule__XAssignment__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); }
+	ruleXOrExpression
+	{ after(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); }
+	(rule__XAssignment__Group_1_1__0)?
+	{ after(grammarAccess.getXAssignmentAccess().getGroup_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1__0__Impl
+	rule__XAssignment__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); }
+	(rule__XAssignment__Group_1_1_0__0)
+	{ after(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); }
+	(rule__XAssignment__RightOperandAssignment_1_1_1)
+	{ after(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); }
+	(rule__XAssignment__Group_1_1_0_0__0)
+	{ after(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1_0_0__0__Impl
+	rule__XAssignment__Group_1_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAssignment__Group_1_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); }
+	(rule__XAssignment__FeatureAssignment_1_1_0_0_1)
+	{ after(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpMultiAssign__Group_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_5__0__Impl
+	rule__OpMultiAssign__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); }
+	'<'
+	{ after(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_5__1__Impl
+	rule__OpMultiAssign__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); }
+	'<'
+	{ after(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_5__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); }
+	'='
+	{ after(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpMultiAssign__Group_6__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_6__0__Impl
+	rule__OpMultiAssign__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); }
+	'>'
+	{ after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_6__1__Impl
+	rule__OpMultiAssign__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); }
+	('>')?
+	{ after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpMultiAssign__Group_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); }
+	'>='
+	{ after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group__0__Impl
+	rule__XOrExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); }
+	ruleXAndExpression
+	{ after(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getGroup_1()); }
+	(rule__XOrExpression__Group_1__0)*
+	{ after(grammarAccess.getXOrExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1__0__Impl
+	rule__XOrExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); }
+	(rule__XOrExpression__Group_1_0__0)
+	{ after(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); }
+	(rule__XOrExpression__RightOperandAssignment_1_1)
+	{ after(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); }
+	(rule__XOrExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1_0_0__0__Impl
+	rule__XOrExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOrExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+	(rule__XOrExpression__FeatureAssignment_1_0_0_1)
+	{ after(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAndExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group__0__Impl
+	rule__XAndExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); }
+	ruleXEqualityExpression
+	{ after(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getGroup_1()); }
+	(rule__XAndExpression__Group_1__0)*
+	{ after(grammarAccess.getXAndExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAndExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1__0__Impl
+	rule__XAndExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); }
+	(rule__XAndExpression__Group_1_0__0)
+	{ after(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); }
+	(rule__XAndExpression__RightOperandAssignment_1_1)
+	{ after(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAndExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); }
+	(rule__XAndExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAndExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1_0_0__0__Impl
+	rule__XAndExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAndExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+	(rule__XAndExpression__FeatureAssignment_1_0_0_1)
+	{ after(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XEqualityExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group__0__Impl
+	rule__XEqualityExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); }
+	ruleXRelationalExpression
+	{ after(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); }
+	(rule__XEqualityExpression__Group_1__0)*
+	{ after(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XEqualityExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1__0__Impl
+	rule__XEqualityExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); }
+	(rule__XEqualityExpression__Group_1_0__0)
+	{ after(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); }
+	(rule__XEqualityExpression__RightOperandAssignment_1_1)
+	{ after(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XEqualityExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); }
+	(rule__XEqualityExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XEqualityExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1_0_0__0__Impl
+	rule__XEqualityExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XEqualityExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+	(rule__XEqualityExpression__FeatureAssignment_1_0_0_1)
+	{ after(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group__0__Impl
+	rule__XRelationalExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); }
+	ruleXOtherOperatorExpression
+	{ after(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); }
+	(rule__XRelationalExpression__Alternatives_1)*
+	{ after(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0__0__Impl
+	rule__XRelationalExpression__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); }
+	(rule__XRelationalExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); }
+	(rule__XRelationalExpression__TypeAssignment_1_0_1)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); }
+	(rule__XRelationalExpression__Group_1_0_0_0__0)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_0_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0_0_0__0__Impl
+	rule__XRelationalExpression__Group_1_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); }
+	()
+	{ after(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_0_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_0_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); }
+	'instanceof'
+	{ after(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_1__0__Impl
+	rule__XRelationalExpression__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); }
+	(rule__XRelationalExpression__Group_1_1_0__0)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); }
+	(rule__XRelationalExpression__RightOperandAssignment_1_1_1)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); }
+	(rule__XRelationalExpression__Group_1_1_0_0__0)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XRelationalExpression__Group_1_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_1_0_0__0__Impl
+	rule__XRelationalExpression__Group_1_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XRelationalExpression__Group_1_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Group_1_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); }
+	(rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1)
+	{ after(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpCompare__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpCompare__Group_1__0__Impl
+	rule__OpCompare__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpCompare__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); }
+	'<'
+	{ after(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpCompare__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpCompare__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpCompare__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); }
+	'='
+	{ after(grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOtherOperatorExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOtherOperatorExpression__Group__0__Impl
+	rule__XOtherOperatorExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); }
+	ruleXAdditiveExpression
+	{ after(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOtherOperatorExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); }
+	(rule__XOtherOperatorExpression__Group_1__0)*
+	{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOtherOperatorExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOtherOperatorExpression__Group_1__0__Impl
+	rule__XOtherOperatorExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); }
+	(rule__XOtherOperatorExpression__Group_1_0__0)
+	{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOtherOperatorExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); }
+	(rule__XOtherOperatorExpression__RightOperandAssignment_1_1)
+	{ after(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOtherOperatorExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOtherOperatorExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); }
+	(rule__XOtherOperatorExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOtherOperatorExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOtherOperatorExpression__Group_1_0_0__0__Impl
+	rule__XOtherOperatorExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+	(rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1)
+	{ after(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpOther__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_2__0__Impl
+	rule__OpOther__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); }
+	'>'
+	{ after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); }
+	'..'
+	{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpOther__Group_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_5__0__Impl
+	rule__OpOther__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); }
+	'>'
+	{ after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); }
+	(rule__OpOther__Alternatives_5_1)
+	{ after(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpOther__Group_5_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_5_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_5_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); }
+	(rule__OpOther__Group_5_1_0_0__0)
+	{ after(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpOther__Group_5_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_5_1_0_0__0__Impl
+	rule__OpOther__Group_5_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_5_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); }
+	'>'
+	{ after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_5_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_5_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_5_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); }
+	'>'
+	{ after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpOther__Group_6__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_6__0__Impl
+	rule__OpOther__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_6__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); }
+	'<'
+	{ after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_6__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_6__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); }
+	(rule__OpOther__Alternatives_6_1)
+	{ after(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpOther__Group_6_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_6_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_6_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); }
+	(rule__OpOther__Group_6_1_0_0__0)
+	{ after(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpOther__Group_6_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_6_1_0_0__0__Impl
+	rule__OpOther__Group_6_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_6_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); }
+	'<'
+	{ after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_6_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__OpOther__Group_6_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Group_6_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); }
+	'<'
+	{ after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAdditiveExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAdditiveExpression__Group__0__Impl
+	rule__XAdditiveExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); }
+	ruleXMultiplicativeExpression
+	{ after(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAdditiveExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); }
+	(rule__XAdditiveExpression__Group_1__0)*
+	{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAdditiveExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAdditiveExpression__Group_1__0__Impl
+	rule__XAdditiveExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); }
+	(rule__XAdditiveExpression__Group_1_0__0)
+	{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAdditiveExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); }
+	(rule__XAdditiveExpression__RightOperandAssignment_1_1)
+	{ after(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAdditiveExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAdditiveExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); }
+	(rule__XAdditiveExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAdditiveExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAdditiveExpression__Group_1_0_0__0__Impl
+	rule__XAdditiveExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XAdditiveExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+	(rule__XAdditiveExpression__FeatureAssignment_1_0_0_1)
+	{ after(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMultiplicativeExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMultiplicativeExpression__Group__0__Impl
+	rule__XMultiplicativeExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); }
+	ruleXUnaryOperation
+	{ after(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMultiplicativeExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); }
+	(rule__XMultiplicativeExpression__Group_1__0)*
+	{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMultiplicativeExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMultiplicativeExpression__Group_1__0__Impl
+	rule__XMultiplicativeExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); }
+	(rule__XMultiplicativeExpression__Group_1_0__0)
+	{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMultiplicativeExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); }
+	(rule__XMultiplicativeExpression__RightOperandAssignment_1_1)
+	{ after(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMultiplicativeExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMultiplicativeExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); }
+	(rule__XMultiplicativeExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMultiplicativeExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMultiplicativeExpression__Group_1_0_0__0__Impl
+	rule__XMultiplicativeExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+	(rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1)
+	{ after(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XUnaryOperation__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XUnaryOperation__Group_0__0__Impl
+	rule__XUnaryOperation__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); }
+	()
+	{ after(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XUnaryOperation__Group_0__1__Impl
+	rule__XUnaryOperation__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); }
+	(rule__XUnaryOperation__FeatureAssignment_0_1)
+	{ after(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__Group_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XUnaryOperation__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__Group_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); }
+	(rule__XUnaryOperation__OperandAssignment_0_2)
+	{ after(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XCastedExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCastedExpression__Group__0__Impl
+	rule__XCastedExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); }
+	ruleXPostfixOperation
+	{ after(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCastedExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCastedExpressionAccess().getGroup_1()); }
+	(rule__XCastedExpression__Group_1__0)*
+	{ after(grammarAccess.getXCastedExpressionAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XCastedExpression__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCastedExpression__Group_1__0__Impl
+	rule__XCastedExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); }
+	(rule__XCastedExpression__Group_1_0__0)
+	{ after(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCastedExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); }
+	(rule__XCastedExpression__TypeAssignment_1_1)
+	{ after(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XCastedExpression__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCastedExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); }
+	(rule__XCastedExpression__Group_1_0_0__0)
+	{ after(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XCastedExpression__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCastedExpression__Group_1_0_0__0__Impl
+	rule__XCastedExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCastedExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); }
+	'as'
+	{ after(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XPostfixOperation__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XPostfixOperation__Group__0__Impl
+	rule__XPostfixOperation__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPostfixOperation__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); }
+	ruleXMemberFeatureCall
+	{ after(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPostfixOperation__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XPostfixOperation__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPostfixOperation__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXPostfixOperationAccess().getGroup_1()); }
+	(rule__XPostfixOperation__Group_1__0)?
+	{ after(grammarAccess.getXPostfixOperationAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XPostfixOperation__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XPostfixOperation__Group_1__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPostfixOperation__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); }
+	(rule__XPostfixOperation__Group_1_0__0)
+	{ after(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XPostfixOperation__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XPostfixOperation__Group_1_0__0__Impl
+	rule__XPostfixOperation__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPostfixOperation__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); }
+	()
+	{ after(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPostfixOperation__Group_1_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XPostfixOperation__Group_1_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPostfixOperation__Group_1_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); }
+	(rule__XPostfixOperation__FeatureAssignment_1_0_1)
+	{ after(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group__0__Impl
+	rule__XMemberFeatureCall__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); }
+	ruleXPrimaryExpression
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); }
+	(rule__XMemberFeatureCall__Alternatives_1)*
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_0__0__Impl
+	rule__XMemberFeatureCall__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); }
+	(rule__XMemberFeatureCall__Group_1_0_0__0)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); }
+	(rule__XMemberFeatureCall__ValueAssignment_1_0_1)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); }
+	(rule__XMemberFeatureCall__Group_1_0_0_0__0)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_0_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl
+	rule__XMemberFeatureCall__Group_1_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); }
+	()
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl
+	rule__XMemberFeatureCall__Group_1_0_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); }
+	(rule__XMemberFeatureCall__Alternatives_1_0_0_0_1)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0_0_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl
+	rule__XMemberFeatureCall__Group_1_0_0_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); }
+	(rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0_0_0__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); }
+	ruleOpSingleAssign
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1__0__Impl
+	rule__XMemberFeatureCall__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); }
+	(rule__XMemberFeatureCall__Group_1_1_0__0)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1__1__Impl
+	rule__XMemberFeatureCall__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); }
+	(rule__XMemberFeatureCall__Group_1_1_1__0)?
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1__2__Impl
+	rule__XMemberFeatureCall__Group_1_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); }
+	(rule__XMemberFeatureCall__FeatureAssignment_1_1_2)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1__3__Impl
+	rule__XMemberFeatureCall__Group_1_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); }
+	(rule__XMemberFeatureCall__Group_1_1_3__0)?
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); }
+	(rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4)?
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); }
+	(rule__XMemberFeatureCall__Group_1_1_0_0__0)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl
+	rule__XMemberFeatureCall__Group_1_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); }
+	()
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); }
+	(rule__XMemberFeatureCall__Alternatives_1_1_0_0_1)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_1__0__Impl
+	rule__XMemberFeatureCall__Group_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0()); }
+	'<'
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_1__1__Impl
+	rule__XMemberFeatureCall__Group_1_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); }
+	(rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_1__2__Impl
+	rule__XMemberFeatureCall__Group_1_1_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); }
+	(rule__XMemberFeatureCall__Group_1_1_1_2__0)*
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3()); }
+	'>'
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_1_1_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl
+	rule__XMemberFeatureCall__Group_1_1_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); }
+	','
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); }
+	(rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_1_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_3__0__Impl
+	rule__XMemberFeatureCall__Group_1_1_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); }
+	(rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_3__1__Impl
+	rule__XMemberFeatureCall__Group_1_1_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); }
+	(rule__XMemberFeatureCall__Alternatives_1_1_3_1)?
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); }
+	')'
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_1_3_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl
+	rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); }
+	(rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1()); }
+	(rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0)*
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl
+	rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); }
+	','
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1()); }
+	(rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1)
+	{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSetLiteral__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSetLiteral__Group__0__Impl
+	rule__XSetLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); }
+	()
+	{ after(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSetLiteral__Group__1__Impl
+	rule__XSetLiteral__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); }
+	'#'
+	{ after(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSetLiteral__Group__2__Impl
+	rule__XSetLiteral__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSetLiteral__Group__3__Impl
+	rule__XSetLiteral__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSetLiteralAccess().getGroup_3()); }
+	(rule__XSetLiteral__Group_3__0)?
+	{ after(grammarAccess.getXSetLiteralAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSetLiteral__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); }
+	'}'
+	{ after(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSetLiteral__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSetLiteral__Group_3__0__Impl
+	rule__XSetLiteral__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); }
+	(rule__XSetLiteral__ElementsAssignment_3_0)
+	{ after(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSetLiteral__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); }
+	(rule__XSetLiteral__Group_3_1__0)*
+	{ after(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSetLiteral__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSetLiteral__Group_3_1__0__Impl
+	rule__XSetLiteral__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSetLiteral__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); }
+	(rule__XSetLiteral__ElementsAssignment_3_1_1)
+	{ after(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XListLiteral__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XListLiteral__Group__0__Impl
+	rule__XListLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); }
+	()
+	{ after(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XListLiteral__Group__1__Impl
+	rule__XListLiteral__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); }
+	'#'
+	{ after(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XListLiteral__Group__2__Impl
+	rule__XListLiteral__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); }
+	'['
+	{ after(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XListLiteral__Group__3__Impl
+	rule__XListLiteral__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXListLiteralAccess().getGroup_3()); }
+	(rule__XListLiteral__Group_3__0)?
+	{ after(grammarAccess.getXListLiteralAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XListLiteral__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); }
+	']'
+	{ after(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XListLiteral__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XListLiteral__Group_3__0__Impl
+	rule__XListLiteral__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); }
+	(rule__XListLiteral__ElementsAssignment_3_0)
+	{ after(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XListLiteral__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXListLiteralAccess().getGroup_3_1()); }
+	(rule__XListLiteral__Group_3_1__0)*
+	{ after(grammarAccess.getXListLiteralAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XListLiteral__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XListLiteral__Group_3_1__0__Impl
+	rule__XListLiteral__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XListLiteral__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); }
+	(rule__XListLiteral__ElementsAssignment_3_1_1)
+	{ after(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XClosure__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group__0__Impl
+	rule__XClosure__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getGroup_0()); }
+	(rule__XClosure__Group_0__0)
+	{ after(grammarAccess.getXClosureAccess().getGroup_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group__1__Impl
+	rule__XClosure__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getGroup_1()); }
+	(rule__XClosure__Group_1__0)?
+	{ after(grammarAccess.getXClosureAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group__2__Impl
+	rule__XClosure__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); }
+	(rule__XClosure__ExpressionAssignment_2)
+	{ after(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); }
+	']'
+	{ after(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XClosure__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getGroup_0_0()); }
+	(rule__XClosure__Group_0_0__0)
+	{ after(grammarAccess.getXClosureAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XClosure__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_0_0__0__Impl
+	rule__XClosure__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); }
+	()
+	{ after(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); }
+	'['
+	{ after(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XClosure__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_1__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getGroup_1_0()); }
+	(rule__XClosure__Group_1_0__0)
+	{ after(grammarAccess.getXClosureAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XClosure__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_1_0__0__Impl
+	rule__XClosure__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getGroup_1_0_0()); }
+	(rule__XClosure__Group_1_0_0__0)?
+	{ after(grammarAccess.getXClosureAccess().getGroup_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_1_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); }
+	(rule__XClosure__ExplicitSyntaxAssignment_1_0_1)
+	{ after(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XClosure__Group_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_1_0_0__0__Impl
+	rule__XClosure__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); }
+	(rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0)
+	{ after(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); }
+	(rule__XClosure__Group_1_0_0_1__0)*
+	{ after(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XClosure__Group_1_0_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_1_0_0_1__0__Impl
+	rule__XClosure__Group_1_0_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1_0_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); }
+	','
+	{ after(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1_0_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XClosure__Group_1_0_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__Group_1_0_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); }
+	(rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1)
+	{ after(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XExpressionInClosure__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XExpressionInClosure__Group__0__Impl
+	rule__XExpressionInClosure__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionInClosure__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionInClosure__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XExpressionInClosure__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionInClosure__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); }
+	(rule__XExpressionInClosure__Group_1__0)*
+	{ after(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XExpressionInClosure__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XExpressionInClosure__Group_1__0__Impl
+	rule__XExpressionInClosure__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionInClosure__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); }
+	(rule__XExpressionInClosure__ExpressionsAssignment_1_0)
+	{ after(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionInClosure__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XExpressionInClosure__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionInClosure__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); }
+	(';')?
+	{ after(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XShortClosure__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group__0__Impl
+	rule__XShortClosure__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getGroup_0()); }
+	(rule__XShortClosure__Group_0__0)
+	{ after(grammarAccess.getXShortClosureAccess().getGroup_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); }
+	(rule__XShortClosure__ExpressionAssignment_1)
+	{ after(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XShortClosure__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getGroup_0_0()); }
+	(rule__XShortClosure__Group_0_0__0)
+	{ after(grammarAccess.getXShortClosureAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XShortClosure__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group_0_0__0__Impl
+	rule__XShortClosure__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); }
+	()
+	{ after(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group_0_0__1__Impl
+	rule__XShortClosure__Group_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); }
+	(rule__XShortClosure__Group_0_0_1__0)?
+	{ after(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); }
+	(rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2)
+	{ after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XShortClosure__Group_0_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group_0_0_1__0__Impl
+	rule__XShortClosure__Group_0_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); }
+	(rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0)
+	{ after(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group_0_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); }
+	(rule__XShortClosure__Group_0_0_1_1__0)*
+	{ after(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XShortClosure__Group_0_0_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group_0_0_1_1__0__Impl
+	rule__XShortClosure__Group_0_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); }
+	','
+	{ after(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XShortClosure__Group_0_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__Group_0_0_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); }
+	(rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1)
+	{ after(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XParenthesizedExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XParenthesizedExpression__Group__0__Impl
+	rule__XParenthesizedExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XParenthesizedExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); }
+	'('
+	{ after(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XParenthesizedExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XParenthesizedExpression__Group__1__Impl
+	rule__XParenthesizedExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XParenthesizedExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); }
+	ruleXExpression
+	{ after(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XParenthesizedExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XParenthesizedExpression__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XParenthesizedExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); }
+	')'
+	{ after(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XIfExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XIfExpression__Group__0__Impl
+	rule__XIfExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XIfExpression__Group__1__Impl
+	rule__XIfExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); }
+	'if'
+	{ after(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XIfExpression__Group__2__Impl
+	rule__XIfExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XIfExpression__Group__3__Impl
+	rule__XIfExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); }
+	(rule__XIfExpression__IfAssignment_3)
+	{ after(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XIfExpression__Group__4__Impl
+	rule__XIfExpression__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); }
+	')'
+	{ after(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XIfExpression__Group__5__Impl
+	rule__XIfExpression__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); }
+	(rule__XIfExpression__ThenAssignment_5)
+	{ after(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XIfExpression__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXIfExpressionAccess().getGroup_6()); }
+	(rule__XIfExpression__Group_6__0)?
+	{ after(grammarAccess.getXIfExpressionAccess().getGroup_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XIfExpression__Group_6__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XIfExpression__Group_6__0__Impl
+	rule__XIfExpression__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group_6__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); }
+	('else')
+	{ after(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group_6__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XIfExpression__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__Group_6__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); }
+	(rule__XIfExpression__ElseAssignment_6_1)
+	{ after(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSwitchExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group__0__Impl
+	rule__XSwitchExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group__1__Impl
+	rule__XSwitchExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); }
+	'switch'
+	{ after(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group__2__Impl
+	rule__XSwitchExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); }
+	(rule__XSwitchExpression__Alternatives_2)
+	{ after(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group__3__Impl
+	rule__XSwitchExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); }
+	'{'
+	{ after(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group__4__Impl
+	rule__XSwitchExpression__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); }
+	(rule__XSwitchExpression__CasesAssignment_4)*
+	{ after(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group__5__Impl
+	rule__XSwitchExpression__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); }
+	(rule__XSwitchExpression__Group_5__0)?
+	{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); }
+	'}'
+	{ after(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSwitchExpression__Group_2_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_0__0__Impl
+	rule__XSwitchExpression__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); }
+	(rule__XSwitchExpression__Group_2_0_0__0)
+	{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_0__1__Impl
+	rule__XSwitchExpression__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); }
+	(rule__XSwitchExpression__SwitchAssignment_2_0_1)
+	{ after(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); }
+	')'
+	{ after(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSwitchExpression__Group_2_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); }
+	(rule__XSwitchExpression__Group_2_0_0_0__0)
+	{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSwitchExpression__Group_2_0_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_0_0_0__0__Impl
+	rule__XSwitchExpression__Group_2_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); }
+	'('
+	{ after(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_0_0_0__1__Impl
+	rule__XSwitchExpression__Group_2_0_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); }
+	(rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1)
+	{ after(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0_0_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_0_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_0_0_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); }
+	':'
+	{ after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSwitchExpression__Group_2_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_1__0__Impl
+	rule__XSwitchExpression__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); }
+	(rule__XSwitchExpression__Group_2_1_0__0)?
+	{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); }
+	(rule__XSwitchExpression__SwitchAssignment_2_1_1)
+	{ after(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSwitchExpression__Group_2_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); }
+	(rule__XSwitchExpression__Group_2_1_0_0__0)
+	{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSwitchExpression__Group_2_1_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_1_0_0__0__Impl
+	rule__XSwitchExpression__Group_2_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_1_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); }
+	(rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0)
+	{ after(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_1_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_2_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_2_1_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); }
+	':'
+	{ after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSwitchExpression__Group_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_5__0__Impl
+	rule__XSwitchExpression__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); }
+	'default'
+	{ after(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_5__1__Impl
+	rule__XSwitchExpression__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); }
+	':'
+	{ after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_5__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSwitchExpression__Group_5__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Group_5__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); }
+	(rule__XSwitchExpression__DefaultAssignment_5_2)
+	{ after(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XCasePart__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCasePart__Group__0__Impl
+	rule__XCasePart__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); }
+	()
+	{ after(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCasePart__Group__1__Impl
+	rule__XCasePart__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); }
+	(rule__XCasePart__TypeGuardAssignment_1)?
+	{ after(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCasePart__Group__2__Impl
+	rule__XCasePart__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCasePartAccess().getGroup_2()); }
+	(rule__XCasePart__Group_2__0)?
+	{ after(grammarAccess.getXCasePartAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCasePart__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCasePartAccess().getAlternatives_3()); }
+	(rule__XCasePart__Alternatives_3)
+	{ after(grammarAccess.getXCasePartAccess().getAlternatives_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XCasePart__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCasePart__Group_2__0__Impl
+	rule__XCasePart__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); }
+	'case'
+	{ after(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCasePart__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); }
+	(rule__XCasePart__CaseAssignment_2_1)
+	{ after(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XCasePart__Group_3_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCasePart__Group_3_0__0__Impl
+	rule__XCasePart__Group_3_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group_3_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); }
+	':'
+	{ after(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group_3_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCasePart__Group_3_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Group_3_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); }
+	(rule__XCasePart__ThenAssignment_3_0_1)
+	{ after(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XForLoopExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group__0__Impl
+	rule__XForLoopExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); }
+	(rule__XForLoopExpression__Group_0__0)
+	{ after(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group__1__Impl
+	rule__XForLoopExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); }
+	(rule__XForLoopExpression__ForExpressionAssignment_1)
+	{ after(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group__2__Impl
+	rule__XForLoopExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); }
+	')'
+	{ after(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); }
+	(rule__XForLoopExpression__EachExpressionAssignment_3)
+	{ after(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XForLoopExpression__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); }
+	(rule__XForLoopExpression__Group_0_0__0)
+	{ after(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XForLoopExpression__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group_0_0__0__Impl
+	rule__XForLoopExpression__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); }
+	()
+	{ after(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group_0_0__1__Impl
+	rule__XForLoopExpression__Group_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); }
+	'for'
+	{ after(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group_0_0__2__Impl
+	rule__XForLoopExpression__Group_0_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); }
+	'('
+	{ after(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0_0__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group_0_0__3__Impl
+	rule__XForLoopExpression__Group_0_0__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0_0__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); }
+	(rule__XForLoopExpression__DeclaredParamAssignment_0_0_3)
+	{ after(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0_0__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XForLoopExpression__Group_0_0__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__Group_0_0__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); }
+	':'
+	{ after(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XBasicForLoopExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__0__Impl
+	rule__XBasicForLoopExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__1__Impl
+	rule__XBasicForLoopExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); }
+	'for'
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__2__Impl
+	rule__XBasicForLoopExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__3__Impl
+	rule__XBasicForLoopExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); }
+	(rule__XBasicForLoopExpression__Group_3__0)?
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__4__Impl
+	rule__XBasicForLoopExpression__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); }
+	';'
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__5__Impl
+	rule__XBasicForLoopExpression__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); }
+	(rule__XBasicForLoopExpression__ExpressionAssignment_5)?
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__6__Impl
+	rule__XBasicForLoopExpression__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); }
+	';'
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__7__Impl
+	rule__XBasicForLoopExpression__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); }
+	(rule__XBasicForLoopExpression__Group_7__0)?
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__8
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__8__Impl
+	rule__XBasicForLoopExpression__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__8__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); }
+	')'
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__9
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group__9__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); }
+	(rule__XBasicForLoopExpression__EachExpressionAssignment_9)
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XBasicForLoopExpression__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group_3__0__Impl
+	rule__XBasicForLoopExpression__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); }
+	(rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0)
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); }
+	(rule__XBasicForLoopExpression__Group_3_1__0)*
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XBasicForLoopExpression__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group_3_1__0__Impl
+	rule__XBasicForLoopExpression__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); }
+	','
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); }
+	(rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1)
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XBasicForLoopExpression__Group_7__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group_7__0__Impl
+	rule__XBasicForLoopExpression__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_7__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); }
+	(rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0)
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_7__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_7__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); }
+	(rule__XBasicForLoopExpression__Group_7_1__0)*
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XBasicForLoopExpression__Group_7_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group_7_1__0__Impl
+	rule__XBasicForLoopExpression__Group_7_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_7_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); }
+	','
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_7_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBasicForLoopExpression__Group_7_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__Group_7_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); }
+	(rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1)
+	{ after(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XWhileExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XWhileExpression__Group__0__Impl
+	rule__XWhileExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XWhileExpression__Group__1__Impl
+	rule__XWhileExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); }
+	'while'
+	{ after(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XWhileExpression__Group__2__Impl
+	rule__XWhileExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XWhileExpression__Group__3__Impl
+	rule__XWhileExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); }
+	(rule__XWhileExpression__PredicateAssignment_3)
+	{ after(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XWhileExpression__Group__4__Impl
+	rule__XWhileExpression__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); }
+	')'
+	{ after(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XWhileExpression__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); }
+	(rule__XWhileExpression__BodyAssignment_5)
+	{ after(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XDoWhileExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XDoWhileExpression__Group__0__Impl
+	rule__XDoWhileExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XDoWhileExpression__Group__1__Impl
+	rule__XDoWhileExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); }
+	'do'
+	{ after(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XDoWhileExpression__Group__2__Impl
+	rule__XDoWhileExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); }
+	(rule__XDoWhileExpression__BodyAssignment_2)
+	{ after(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XDoWhileExpression__Group__3__Impl
+	rule__XDoWhileExpression__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); }
+	'while'
+	{ after(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XDoWhileExpression__Group__4__Impl
+	rule__XDoWhileExpression__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); }
+	'('
+	{ after(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XDoWhileExpression__Group__5__Impl
+	rule__XDoWhileExpression__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); }
+	(rule__XDoWhileExpression__PredicateAssignment_5)
+	{ after(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XDoWhileExpression__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); }
+	')'
+	{ after(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XBlockExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBlockExpression__Group__0__Impl
+	rule__XBlockExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBlockExpression__Group__1__Impl
+	rule__XBlockExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+	'{'
+	{ after(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBlockExpression__Group__2__Impl
+	rule__XBlockExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBlockExpressionAccess().getGroup_2()); }
+	(rule__XBlockExpression__Group_2__0)*
+	{ after(grammarAccess.getXBlockExpressionAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBlockExpression__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); }
+	'}'
+	{ after(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XBlockExpression__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBlockExpression__Group_2__0__Impl
+	rule__XBlockExpression__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); }
+	(rule__XBlockExpression__ExpressionsAssignment_2_0)
+	{ after(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBlockExpression__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); }
+	(';')?
+	{ after(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XVariableDeclaration__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XVariableDeclaration__Group__0__Impl
+	rule__XVariableDeclaration__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); }
+	()
+	{ after(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XVariableDeclaration__Group__1__Impl
+	rule__XVariableDeclaration__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); }
+	(rule__XVariableDeclaration__Alternatives_1)
+	{ after(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XVariableDeclaration__Group__2__Impl
+	rule__XVariableDeclaration__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); }
+	(rule__XVariableDeclaration__Alternatives_2)
+	{ after(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XVariableDeclaration__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); }
+	(rule__XVariableDeclaration__Group_3__0)?
+	{ after(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XVariableDeclaration__Group_2_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XVariableDeclaration__Group_2_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group_2_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); }
+	(rule__XVariableDeclaration__Group_2_0_0__0)
+	{ after(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XVariableDeclaration__Group_2_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XVariableDeclaration__Group_2_0_0__0__Impl
+	rule__XVariableDeclaration__Group_2_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group_2_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); }
+	(rule__XVariableDeclaration__TypeAssignment_2_0_0_0)
+	{ after(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group_2_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XVariableDeclaration__Group_2_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group_2_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); }
+	(rule__XVariableDeclaration__NameAssignment_2_0_0_1)
+	{ after(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XVariableDeclaration__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XVariableDeclaration__Group_3__0__Impl
+	rule__XVariableDeclaration__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0()); }
+	'='
+	{ after(grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XVariableDeclaration__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); }
+	(rule__XVariableDeclaration__RightAssignment_3_1)
+	{ after(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmFormalParameter__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmFormalParameter__Group__0__Impl
+	rule__JvmFormalParameter__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmFormalParameter__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); }
+	(rule__JvmFormalParameter__ParameterTypeAssignment_0)?
+	{ after(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmFormalParameter__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmFormalParameter__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmFormalParameter__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); }
+	(rule__JvmFormalParameter__NameAssignment_1)
+	{ after(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FullJvmFormalParameter__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FullJvmFormalParameter__Group__0__Impl
+	rule__FullJvmFormalParameter__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FullJvmFormalParameter__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); }
+	(rule__FullJvmFormalParameter__ParameterTypeAssignment_0)
+	{ after(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FullJvmFormalParameter__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__FullJvmFormalParameter__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FullJvmFormalParameter__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); }
+	(rule__FullJvmFormalParameter__NameAssignment_1)
+	{ after(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFeatureCall__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group__0__Impl
+	rule__XFeatureCall__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); }
+	()
+	{ after(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group__1__Impl
+	rule__XFeatureCall__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getGroup_1()); }
+	(rule__XFeatureCall__Group_1__0)?
+	{ after(grammarAccess.getXFeatureCallAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group__2__Impl
+	rule__XFeatureCall__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); }
+	(rule__XFeatureCall__FeatureAssignment_2)
+	{ after(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group__3__Impl
+	rule__XFeatureCall__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getGroup_3()); }
+	(rule__XFeatureCall__Group_3__0)?
+	{ after(grammarAccess.getXFeatureCallAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); }
+	(rule__XFeatureCall__FeatureCallArgumentsAssignment_4)?
+	{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFeatureCall__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_1__0__Impl
+	rule__XFeatureCall__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0()); }
+	'<'
+	{ after(grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_1__1__Impl
+	rule__XFeatureCall__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); }
+	(rule__XFeatureCall__TypeArgumentsAssignment_1_1)
+	{ after(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_1__2__Impl
+	rule__XFeatureCall__Group_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); }
+	(rule__XFeatureCall__Group_1_2__0)*
+	{ after(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3()); }
+	'>'
+	{ after(grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFeatureCall__Group_1_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_1_2__0__Impl
+	rule__XFeatureCall__Group_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); }
+	','
+	{ after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_1_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_1_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); }
+	(rule__XFeatureCall__TypeArgumentsAssignment_1_2_1)
+	{ after(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFeatureCall__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_3__0__Impl
+	rule__XFeatureCall__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); }
+	(rule__XFeatureCall__ExplicitOperationCallAssignment_3_0)
+	{ after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_3__1__Impl
+	rule__XFeatureCall__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); }
+	(rule__XFeatureCall__Alternatives_3_1)?
+	{ after(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); }
+	')'
+	{ after(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFeatureCall__Group_3_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_3_1_1__0__Impl
+	rule__XFeatureCall__Group_3_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); }
+	(rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0)
+	{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_3_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); }
+	(rule__XFeatureCall__Group_3_1_1_1__0)*
+	{ after(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFeatureCall__Group_3_1_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_3_1_1_1__0__Impl
+	rule__XFeatureCall__Group_3_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3_1_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); }
+	','
+	{ after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3_1_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFeatureCall__Group_3_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Group_3_1_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); }
+	(rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1)
+	{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XConstructorCall__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group__0__Impl
+	rule__XConstructorCall__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); }
+	()
+	{ after(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group__1__Impl
+	rule__XConstructorCall__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); }
+	'new'
+	{ after(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group__2__Impl
+	rule__XConstructorCall__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); }
+	(rule__XConstructorCall__ConstructorAssignment_2)
+	{ after(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group__3__Impl
+	rule__XConstructorCall__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getGroup_3()); }
+	(rule__XConstructorCall__Group_3__0)?
+	{ after(grammarAccess.getXConstructorCallAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group__4__Impl
+	rule__XConstructorCall__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getGroup_4()); }
+	(rule__XConstructorCall__Group_4__0)?
+	{ after(grammarAccess.getXConstructorCallAccess().getGroup_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); }
+	(rule__XConstructorCall__ArgumentsAssignment_5)?
+	{ after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XConstructorCall__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_3__0__Impl
+	rule__XConstructorCall__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); }
+	('<')
+	{ after(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_3__1__Impl
+	rule__XConstructorCall__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); }
+	(rule__XConstructorCall__TypeArgumentsAssignment_3_1)
+	{ after(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_3__2__Impl
+	rule__XConstructorCall__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); }
+	(rule__XConstructorCall__Group_3_2__0)*
+	{ after(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3()); }
+	'>'
+	{ after(grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XConstructorCall__Group_3_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_3_2__0__Impl
+	rule__XConstructorCall__Group_3_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); }
+	','
+	{ after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_3_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_3_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); }
+	(rule__XConstructorCall__TypeArgumentsAssignment_3_2_1)
+	{ after(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XConstructorCall__Group_4__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_4__0__Impl
+	rule__XConstructorCall__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); }
+	(rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0)
+	{ after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_4__1__Impl
+	rule__XConstructorCall__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); }
+	(rule__XConstructorCall__Alternatives_4_1)?
+	{ after(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); }
+	')'
+	{ after(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XConstructorCall__Group_4_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_4_1_1__0__Impl
+	rule__XConstructorCall__Group_4_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); }
+	(rule__XConstructorCall__ArgumentsAssignment_4_1_1_0)
+	{ after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_4_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); }
+	(rule__XConstructorCall__Group_4_1_1_1__0)*
+	{ after(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XConstructorCall__Group_4_1_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_4_1_1_1__0__Impl
+	rule__XConstructorCall__Group_4_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4_1_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); }
+	','
+	{ after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4_1_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XConstructorCall__Group_4_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Group_4_1_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); }
+	(rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1)
+	{ after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XBooleanLiteral__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBooleanLiteral__Group__0__Impl
+	rule__XBooleanLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBooleanLiteral__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); }
+	()
+	{ after(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBooleanLiteral__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XBooleanLiteral__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBooleanLiteral__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); }
+	(rule__XBooleanLiteral__Alternatives_1)
+	{ after(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XNullLiteral__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XNullLiteral__Group__0__Impl
+	rule__XNullLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XNullLiteral__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); }
+	()
+	{ after(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XNullLiteral__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XNullLiteral__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XNullLiteral__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); }
+	'null'
+	{ after(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XNumberLiteral__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XNumberLiteral__Group__0__Impl
+	rule__XNumberLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XNumberLiteral__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); }
+	()
+	{ after(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XNumberLiteral__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XNumberLiteral__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XNumberLiteral__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); }
+	(rule__XNumberLiteral__ValueAssignment_1)
+	{ after(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XStringLiteral__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XStringLiteral__Group__0__Impl
+	rule__XStringLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XStringLiteral__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); }
+	()
+	{ after(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XStringLiteral__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XStringLiteral__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XStringLiteral__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); }
+	(rule__XStringLiteral__ValueAssignment_1)
+	{ after(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XTypeLiteral__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTypeLiteral__Group__0__Impl
+	rule__XTypeLiteral__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); }
+	()
+	{ after(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTypeLiteral__Group__1__Impl
+	rule__XTypeLiteral__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); }
+	'typeof'
+	{ after(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTypeLiteral__Group__2__Impl
+	rule__XTypeLiteral__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); }
+	'('
+	{ after(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTypeLiteral__Group__3__Impl
+	rule__XTypeLiteral__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); }
+	(rule__XTypeLiteral__TypeAssignment_3)
+	{ after(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTypeLiteral__Group__4__Impl
+	rule__XTypeLiteral__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); }
+	(rule__XTypeLiteral__ArrayDimensionsAssignment_4)*
+	{ after(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTypeLiteral__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); }
+	')'
+	{ after(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XThrowExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XThrowExpression__Group__0__Impl
+	rule__XThrowExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XThrowExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XThrowExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XThrowExpression__Group__1__Impl
+	rule__XThrowExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XThrowExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); }
+	'throw'
+	{ after(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XThrowExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XThrowExpression__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XThrowExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); }
+	(rule__XThrowExpression__ExpressionAssignment_2)
+	{ after(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XReturnExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XReturnExpression__Group__0__Impl
+	rule__XReturnExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XReturnExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XReturnExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XReturnExpression__Group__1__Impl
+	rule__XReturnExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XReturnExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); }
+	'return'
+	{ after(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XReturnExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XReturnExpression__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XReturnExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); }
+	(rule__XReturnExpression__ExpressionAssignment_2)?
+	{ after(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XTryCatchFinallyExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group__0__Impl
+	rule__XTryCatchFinallyExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); }
+	()
+	{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group__1__Impl
+	rule__XTryCatchFinallyExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); }
+	'try'
+	{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group__2__Impl
+	rule__XTryCatchFinallyExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); }
+	(rule__XTryCatchFinallyExpression__ExpressionAssignment_2)
+	{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); }
+	(rule__XTryCatchFinallyExpression__Alternatives_3)
+	{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XTryCatchFinallyExpression__Group_3_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group_3_0__0__Impl
+	rule__XTryCatchFinallyExpression__Group_3_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group_3_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); }
+		(rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0)
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); }
+	)
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); }
+		(rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0)*
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); }
+	)
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group_3_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); }
+	(rule__XTryCatchFinallyExpression__Group_3_0_1__0)?
+	{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XTryCatchFinallyExpression__Group_3_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl
+	rule__XTryCatchFinallyExpression__Group_3_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); }
+	('finally')
+	{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group_3_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); }
+	(rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1)
+	{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XTryCatchFinallyExpression__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group_3_1__0__Impl
+	rule__XTryCatchFinallyExpression__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); }
+	'finally'
+	{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); }
+	(rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1)
+	{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSynchronizedExpression__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSynchronizedExpression__Group__0__Impl
+	rule__XSynchronizedExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); }
+	(rule__XSynchronizedExpression__Group_0__0)
+	{ after(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSynchronizedExpression__Group__1__Impl
+	rule__XSynchronizedExpression__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); }
+	(rule__XSynchronizedExpression__ParamAssignment_1)
+	{ after(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSynchronizedExpression__Group__2__Impl
+	rule__XSynchronizedExpression__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); }
+	')'
+	{ after(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSynchronizedExpression__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); }
+	(rule__XSynchronizedExpression__ExpressionAssignment_3)
+	{ after(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSynchronizedExpression__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSynchronizedExpression__Group_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); }
+	(rule__XSynchronizedExpression__Group_0_0__0)
+	{ after(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XSynchronizedExpression__Group_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSynchronizedExpression__Group_0_0__0__Impl
+	rule__XSynchronizedExpression__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); }
+	()
+	{ after(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSynchronizedExpression__Group_0_0__1__Impl
+	rule__XSynchronizedExpression__Group_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); }
+	'synchronized'
+	{ after(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group_0_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XSynchronizedExpression__Group_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__Group_0_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); }
+	'('
+	{ after(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XCatchClause__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCatchClause__Group__0__Impl
+	rule__XCatchClause__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); }
+	('catch')
+	{ after(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCatchClause__Group__1__Impl
+	rule__XCatchClause__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); }
+	'('
+	{ after(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCatchClause__Group__2__Impl
+	rule__XCatchClause__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); }
+	(rule__XCatchClause__DeclaredParamAssignment_2)
+	{ after(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCatchClause__Group__3__Impl
+	rule__XCatchClause__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); }
+	')'
+	{ after(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XCatchClause__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); }
+	(rule__XCatchClause__ExpressionAssignment_4)
+	{ after(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__QualifiedName__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__QualifiedName__Group__0__Impl
+	rule__QualifiedName__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); }
+	ruleValidID
+	{ after(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__QualifiedName__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getQualifiedNameAccess().getGroup_1()); }
+	(rule__QualifiedName__Group_1__0)*
+	{ after(grammarAccess.getQualifiedNameAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__QualifiedName__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__QualifiedName__Group_1__0__Impl
+	rule__QualifiedName__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); }
+	('.')
+	{ after(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__QualifiedName__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); }
+	ruleValidID
+	{ after(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Number__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Number__Group_1__0__Impl
+	rule__Number__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getNumberAccess().getAlternatives_1_0()); }
+	(rule__Number__Alternatives_1_0)
+	{ after(grammarAccess.getNumberAccess().getAlternatives_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Number__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getNumberAccess().getGroup_1_1()); }
+	(rule__Number__Group_1_1__0)?
+	{ after(grammarAccess.getNumberAccess().getGroup_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Number__Group_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Number__Group_1_1__0__Impl
+	rule__Number__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Group_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); }
+	'.'
+	{ after(grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Group_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Number__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Group_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); }
+	(rule__Number__Alternatives_1_1_1)
+	{ after(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmTypeReference__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmTypeReference__Group_0__0__Impl
+	rule__JvmTypeReference__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); }
+	ruleJvmParameterizedTypeReference
+	{ after(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmTypeReference__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); }
+	(rule__JvmTypeReference__Group_0_1__0)*
+	{ after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmTypeReference__Group_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmTypeReference__Group_0_1__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Group_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); }
+	(rule__JvmTypeReference__Group_0_1_0__0)
+	{ after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmTypeReference__Group_0_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmTypeReference__Group_0_1_0__0__Impl
+	rule__JvmTypeReference__Group_0_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Group_0_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); }
+	()
+	{ after(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Group_0_1_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmTypeReference__Group_0_1_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Group_0_1_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); }
+	ruleArrayBrackets
+	{ after(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ArrayBrackets__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ArrayBrackets__Group__0__Impl
+	rule__ArrayBrackets__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ArrayBrackets__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); }
+	'['
+	{ after(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ArrayBrackets__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ArrayBrackets__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ArrayBrackets__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); }
+	']'
+	{ after(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFunctionTypeRef__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group__0__Impl
+	rule__XFunctionTypeRef__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); }
+	(rule__XFunctionTypeRef__Group_0__0)?
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group__1__Impl
+	rule__XFunctionTypeRef__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1()); }
+	'=>'
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); }
+	(rule__XFunctionTypeRef__ReturnTypeAssignment_2)
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFunctionTypeRef__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group_0__0__Impl
+	rule__XFunctionTypeRef__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); }
+	'('
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group_0__1__Impl
+	rule__XFunctionTypeRef__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); }
+	(rule__XFunctionTypeRef__Group_0_1__0)?
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); }
+	')'
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFunctionTypeRef__Group_0_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group_0_1__0__Impl
+	rule__XFunctionTypeRef__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); }
+	(rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0)
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); }
+	(rule__XFunctionTypeRef__Group_0_1_1__0)*
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XFunctionTypeRef__Group_0_1_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group_0_1_1__0__Impl
+	rule__XFunctionTypeRef__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0_1_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); }
+	','
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0_1_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__XFunctionTypeRef__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__Group_0_1_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); }
+	(rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1)
+	{ after(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmParameterizedTypeReference__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group__0__Impl
+	rule__JvmParameterizedTypeReference__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); }
+	(rule__JvmParameterizedTypeReference__TypeAssignment_0)
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); }
+	(rule__JvmParameterizedTypeReference__Group_1__0)?
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmParameterizedTypeReference__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1__0__Impl
+	rule__JvmParameterizedTypeReference__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); }
+	('<')
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1__1__Impl
+	rule__JvmParameterizedTypeReference__Group_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); }
+	(rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1)
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1__2__Impl
+	rule__JvmParameterizedTypeReference__Group_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); }
+	(rule__JvmParameterizedTypeReference__Group_1_2__0)*
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1__3__Impl
+	rule__JvmParameterizedTypeReference__Group_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3()); }
+	'>'
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); }
+	(rule__JvmParameterizedTypeReference__Group_1_4__0)*
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmParameterizedTypeReference__Group_1_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_2__0__Impl
+	rule__JvmParameterizedTypeReference__Group_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); }
+	','
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); }
+	(rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1)
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmParameterizedTypeReference__Group_1_4__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4__0__Impl
+	rule__JvmParameterizedTypeReference__Group_1_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); }
+	(rule__JvmParameterizedTypeReference__Group_1_4_0__0)
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4__1__Impl
+	rule__JvmParameterizedTypeReference__Group_1_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); }
+	(rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1)
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); }
+	(rule__JvmParameterizedTypeReference__Group_1_4_2__0)?
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmParameterizedTypeReference__Group_1_4_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); }
+	(rule__JvmParameterizedTypeReference__Group_1_4_0_0__0)
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl
+	rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); }
+	()
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1()); }
+	'.'
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmParameterizedTypeReference__Group_1_4_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl
+	rule__JvmParameterizedTypeReference__Group_1_4_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); }
+	('<')
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl
+	rule__JvmParameterizedTypeReference__Group_1_4_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); }
+	(rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1)
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl
+	rule__JvmParameterizedTypeReference__Group_1_4_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); }
+	(rule__JvmParameterizedTypeReference__Group_1_4_2_2__0)*
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3()); }
+	'>'
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl
+	rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); }
+	','
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); }
+	(rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1)
+	{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmWildcardTypeReference__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmWildcardTypeReference__Group__0__Impl
+	rule__JvmWildcardTypeReference__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); }
+	()
+	{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmWildcardTypeReference__Group__1__Impl
+	rule__JvmWildcardTypeReference__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); }
+	'?'
+	{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmWildcardTypeReference__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); }
+	(rule__JvmWildcardTypeReference__Alternatives_2)?
+	{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmWildcardTypeReference__Group_2_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmWildcardTypeReference__Group_2_0__0__Impl
+	rule__JvmWildcardTypeReference__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group_2_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); }
+	(rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0)
+	{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group_2_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmWildcardTypeReference__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group_2_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); }
+	(rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1)*
+	{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmWildcardTypeReference__Group_2_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmWildcardTypeReference__Group_2_1__0__Impl
+	rule__JvmWildcardTypeReference__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group_2_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); }
+	(rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0)
+	{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group_2_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmWildcardTypeReference__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Group_2_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); }
+	(rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1)*
+	{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmUpperBound__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmUpperBound__Group__0__Impl
+	rule__JvmUpperBound__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmUpperBound__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0()); }
+	'extends'
+	{ after(grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmUpperBound__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmUpperBound__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmUpperBound__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); }
+	(rule__JvmUpperBound__TypeReferenceAssignment_1)
+	{ after(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmUpperBoundAnded__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmUpperBoundAnded__Group__0__Impl
+	rule__JvmUpperBoundAnded__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmUpperBoundAnded__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); }
+	'&'
+	{ after(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmUpperBoundAnded__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmUpperBoundAnded__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmUpperBoundAnded__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); }
+	(rule__JvmUpperBoundAnded__TypeReferenceAssignment_1)
+	{ after(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmLowerBound__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmLowerBound__Group__0__Impl
+	rule__JvmLowerBound__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmLowerBound__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0()); }
+	'super'
+	{ after(grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmLowerBound__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmLowerBound__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmLowerBound__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); }
+	(rule__JvmLowerBound__TypeReferenceAssignment_1)
+	{ after(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__JvmLowerBoundAnded__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmLowerBoundAnded__Group__0__Impl
+	rule__JvmLowerBoundAnded__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmLowerBoundAnded__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); }
+	'&'
+	{ after(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmLowerBoundAnded__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__JvmLowerBoundAnded__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmLowerBoundAnded__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); }
+	(rule__JvmLowerBoundAnded__TypeReferenceAssignment_1)
+	{ after(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__QualifiedNameWithWildcard__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__QualifiedNameWithWildcard__Group__0__Impl
+	rule__QualifiedNameWithWildcard__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedNameWithWildcard__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); }
+	ruleQualifiedName
+	{ after(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedNameWithWildcard__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__QualifiedNameWithWildcard__Group__1__Impl
+	rule__QualifiedNameWithWildcard__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedNameWithWildcard__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); }
+	'.'
+	{ after(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedNameWithWildcard__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__QualifiedNameWithWildcard__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedNameWithWildcard__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); }
+	'*'
+	{ after(grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__QualifiedNameInStaticImport__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__QualifiedNameInStaticImport__Group__0__Impl
+	rule__QualifiedNameInStaticImport__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedNameInStaticImport__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); }
+	ruleValidID
+	{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedNameInStaticImport__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__QualifiedNameInStaticImport__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedNameInStaticImport__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); }
+	'.'
+	{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ActionModel__ImportSectionAssignment_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); }
+		ruleXImportSection
+		{ after(grammarAccess.getActionModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionModel__PackagesAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionModelAccess().getPackagesActionPackageParserRuleCall_1_0()); }
+		ruleActionPackage
+		{ after(grammarAccess.getActionModelAccess().getPackagesActionPackageParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); }
+		ruleQualifiedName
+		{ after(grammarAccess.getActionPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__CommandsAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionPackageAccess().getCommandsActionCommandParserRuleCall_3_1_0()); }
+		ruleActionCommand
+		{ after(grammarAccess.getActionPackageAccess().getCommandsActionCommandParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionPackage__ToolbarsAssignment_3_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionPackageAccess().getToolbarsActionToolbarParserRuleCall_3_2_0()); }
+		ruleActionToolbar
+		{ after(grammarAccess.getActionPackageAccess().getToolbarsActionToolbarParserRuleCall_3_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionCommandAccess().getNameIDTerminalRuleCall_2_0()); }
+		RULE_ID
+		{ after(grammarAccess.getActionCommandAccess().getNameIDTerminalRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__HasDescriptionAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0()); }
+		(
+			{ before(grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0()); }
+			'describedBy'
+			{ after(grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0()); }
+		)
+		{ after(grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__DescriptionAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionCommandAccess().getDescriptionTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+		ruleTRANSLATABLESTRING
+		{ after(grammarAccess.getActionCommandAccess().getDescriptionTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__HasKeyBindingAssignment_4_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0()); }
+		(
+			{ before(grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0()); }
+			'keyBinding'
+			{ after(grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0()); }
+		)
+		{ after(grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__KeyBindingAssignment_4_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionCommandAccess().getKeyBindingSTRINGTerminalRuleCall_4_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getActionCommandAccess().getKeyBindingSTRINGTerminalRuleCall_4_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionCommand__ActionTypeAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionCommandAccess().getActionTypeActionTypeParserRuleCall_5_0()); }
+		ruleActionType
+		{ after(grammarAccess.getActionCommandAccess().getActionTypeActionTypeParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionToolbarAccess().getNameIDTerminalRuleCall_2_0()); }
+		RULE_ID
+		{ after(grammarAccess.getActionToolbarAccess().getNameIDTerminalRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__DescriptionAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+		(
+			{ before(grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+			'describedBy'
+			{ after(grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+		)
+		{ after(grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__DescriptionValueAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionToolbarAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+		ruleTRANSLATABLESTRING
+		{ after(grammarAccess.getActionToolbarAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionToolbar__ActionsAssignment_4_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionToolbarAccess().getActionsActionButtonParserRuleCall_4_2_0()); }
+		ruleActionButton
+		{ after(grammarAccess.getActionToolbarAccess().getActionsActionButtonParserRuleCall_4_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionButtonAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getActionButtonAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__DescriptionAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+		(
+			{ before(grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+			'describedBy'
+			{ after(grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+		)
+		{ after(grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__DescriptionValueAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionButtonAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+		ruleTRANSLATABLESTRING
+		{ after(grammarAccess.getActionButtonAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__CommandAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionButtonAccess().getCommandActionCommandCrossReference_5_0()); }
+		(
+			{ before(grammarAccess.getActionButtonAccess().getCommandActionCommandIDTerminalRuleCall_5_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionButtonAccess().getCommandActionCommandIDTerminalRuleCall_5_0_1()); }
+		)
+		{ after(grammarAccess.getActionButtonAccess().getCommandActionCommandCrossReference_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionButton__IconURIAssignment_6_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionButtonAccess().getIconURISTRINGTerminalRuleCall_6_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getActionButtonAccess().getIconURISTRINGTerminalRuleCall_6_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionTask__ActionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionTaskAccess().getActionTaskActionEnumEnumRuleCall_1_0()); }
+		ruleTaskActionEnum
+		{ after(grammarAccess.getActionTaskAccess().getActionTaskActionEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionSelectWorkload__ActionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionSelectWorkloadAccess().getActionSelectWorkloadActionEnumEnumRuleCall_1_0()); }
+		ruleSelectWorkloadActionEnum
+		{ after(grammarAccess.getActionSelectWorkloadAccess().getActionSelectWorkloadActionEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDialog__ActionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionDialogAccess().getActionDialogActionEnumEnumRuleCall_1_0()); }
+		ruleDialogActionEnum
+		{ after(grammarAccess.getActionDialogAccess().getActionDialogActionEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionReport__ActionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionReportAccess().getActionReportActionEnumEnumRuleCall_1_0()); }
+		ruleReportActionEnum
+		{ after(grammarAccess.getActionReportAccess().getActionReportActionEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionChart__ActionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionChartAccess().getActionChartActionEnumEnumRuleCall_1_0()); }
+		ruleChartActionEnum
+		{ after(grammarAccess.getActionChartAccess().getActionChartActionEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionWorkflow__ActionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionWorkflowAccess().getActionWorkflowActionEnumEnumRuleCall_1_0()); }
+		ruleWorkflowActionEnum
+		{ after(grammarAccess.getActionWorkflowAccess().getActionWorkflowActionEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDatainterchange__ActionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionDatainterchangeAccess().getActionDatainterchangeActionEnumEnumRuleCall_1_0()); }
+		ruleDatainterchangeActionEnum
+		{ after(grammarAccess.getActionDatainterchangeAccess().getActionDatainterchangeActionEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionDatainterchange__DataRefAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionUI__ActionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionUIAccess().getActionUIActionEnumEnumRuleCall_1_0()); }
+		ruleUIActionEnum
+		{ after(grammarAccess.getActionUIAccess().getActionUIActionEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__ActionGroupAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupIDTerminalRuleCall_2_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupIDTerminalRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__CanExecuteAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteCrossReference_4_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteIDTerminalRuleCall_4_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteIDTerminalRuleCall_4_0_1()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteCrossReference_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0()); }
+			'executeImmediate'
+			{ after(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__ExecuteImmediateAssignment_5_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteIDTerminalRuleCall_5_0_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteIDTerminalRuleCall_5_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__HasMessageAssignment_5_0_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0()); }
+			'messageCategory'
+			{ after(grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__MessageCategoryAssignment_5_0_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_0_2_1_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryIDTerminalRuleCall_5_0_2_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryIDTerminalRuleCall_5_0_2_1_0_1()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_0_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__OnFailMessageAssignment_5_0_2_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemCrossReference_5_0_2_3_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemIDTerminalRuleCall_5_0_2_3_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemIDTerminalRuleCall_5_0_2_3_0_1()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemCrossReference_5_0_2_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0()); }
+			'onSuccessMessage'
+			{ after(grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemIDTerminalRuleCall_5_0_2_4_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemIDTerminalRuleCall_5_0_2_4_1_0_1()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__HasExecuteLaterAssignment_5_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0()); }
+			'executeLater'
+			{ after(grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__ExecuteLaterAssignment_5_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteIDTerminalRuleCall_5_1_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteIDTerminalRuleCall_5_1_1_0_1()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0()); }
+			'messageCategory'
+			{ after(grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__MessageCategoryAssignment_5_1_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_1_2_1_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryIDTerminalRuleCall_5_1_2_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryIDTerminalRuleCall_5_1_2_1_0_1()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_1_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemCrossReference_5_1_2_3_0()); }
+		(
+			{ before(grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemIDTerminalRuleCall_5_1_2_3_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemIDTerminalRuleCall_5_1_2_3_0_1()); }
+		)
+		{ after(grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemCrossReference_5_1_2_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__StaticAssignment_2_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); }
+		(
+			{ before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); }
+			'static'
+			{ after(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); }
+		)
+		{ after(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__ExtensionAssignment_2_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); }
+		(
+			{ before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); }
+			'extension'
+			{ after(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); }
+		)
+		{ after(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); }
+		(
+			{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_2_0_2_0_1()); }
+			ruleQualifiedNameInStaticImport
+			{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_2_0_2_0_1()); }
+		)
+		{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__WildcardAssignment_2_0_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); }
+		(
+			{ before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); }
+			'*'
+			{ after(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); }
+		)
+		{ after(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0()); }
+		ruleValidID
+		{ after(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__ImportedTypeAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); }
+		(
+			{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_2_1_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_2_1_0_1()); }
+		)
+		{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0()); }
+		ruleQualifiedNameWithWildcard
+		{ after(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__FqnImportAssignment_2_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); }
+		(
+			{ before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); }
+			'ns'
+			{ after(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); }
+		)
+		{ after(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0()); }
+		ruleQualifiedName
+		{ after(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__AnnotationTypeAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeQualifiedNameParserRuleCall_2_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeQualifiedNameParserRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); }
+		ruleXAnnotationElementValuePair
+		{ after(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); }
+		ruleXAnnotationElementValuePair
+		{ after(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__ValueAssignment_3_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); }
+		ruleXAnnotationElementValueOrCommaList
+		{ after(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); }
+		(
+			{ before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationValidIDParserRuleCall_0_0_0_0_1()); }
+			ruleValidID
+			{ after(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationValidIDParserRuleCall_0_0_0_0_1()); }
+		)
+		{ after(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__ValueAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); }
+		ruleXAnnotationElementValue
+		{ after(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); }
+		ruleXAnnotationOrExpression
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); }
+		ruleXAnnotationOrExpression
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); }
+		ruleXAnnotationOrExpression
+		{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__ElementsAssignment_0_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); }
+		ruleXAnnotationOrExpression
+		{ after(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); }
+		ruleXAnnotationOrExpression
+		{ after(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__FeatureAssignment_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); }
+		(
+			{ before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_1_0_1()); }
+			ruleFeatureCallID
+			{ after(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__ValueAssignment_0_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); }
+		ruleXAssignment
+		{ after(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__FeatureAssignment_1_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); }
+		(
+			{ before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_1_1_0_0_1_0_1()); }
+			ruleOpMultiAssign
+			{ after(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_1_1_0_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__RightOperandAssignment_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); }
+		ruleXAssignment
+		{ after(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__FeatureAssignment_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+		(
+			{ before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementOpOrParserRuleCall_1_0_0_1_0_1()); }
+			ruleOpOr
+			{ after(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementOpOrParserRuleCall_1_0_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__RightOperandAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); }
+		ruleXAndExpression
+		{ after(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__FeatureAssignment_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+		(
+			{ before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1()); }
+			ruleOpAnd
+			{ after(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__RightOperandAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); }
+		ruleXEqualityExpression
+		{ after(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__FeatureAssignment_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+		(
+			{ before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementOpEqualityParserRuleCall_1_0_0_1_0_1()); }
+			ruleOpEquality
+			{ after(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementOpEqualityParserRuleCall_1_0_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XEqualityExpression__RightOperandAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); }
+		ruleXRelationalExpression
+		{ after(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__TypeAssignment_1_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); }
+		(
+			{ before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_1_0_0_1_0_1()); }
+			ruleOpCompare
+			{ after(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_1_0_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__RightOperandAssignment_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); }
+		ruleXOtherOperatorExpression
+		{ after(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+		(
+			{ before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementOpOtherParserRuleCall_1_0_0_1_0_1()); }
+			ruleOpOther
+			{ after(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementOpOtherParserRuleCall_1_0_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOtherOperatorExpression__RightOperandAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); }
+		ruleXAdditiveExpression
+		{ after(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+		(
+			{ before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementOpAddParserRuleCall_1_0_0_1_0_1()); }
+			ruleOpAdd
+			{ after(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementOpAddParserRuleCall_1_0_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAdditiveExpression__RightOperandAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); }
+		ruleXMultiplicativeExpression
+		{ after(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+		(
+			{ before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementOpMultiParserRuleCall_1_0_0_1_0_1()); }
+			ruleOpMulti
+			{ after(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementOpMultiParserRuleCall_1_0_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMultiplicativeExpression__RightOperandAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); }
+		ruleXUnaryOperation
+		{ after(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__FeatureAssignment_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); }
+		(
+			{ before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementOpUnaryParserRuleCall_0_1_0_1()); }
+			ruleOpUnary
+			{ after(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementOpUnaryParserRuleCall_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__OperandAssignment_0_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); }
+		ruleXUnaryOperation
+		{ after(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCastedExpression__TypeAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPostfixOperation__FeatureAssignment_1_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); }
+		(
+			{ before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_0_1_0_1()); }
+			ruleOpPostfix
+			{ after(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_0_1_0_1()); }
+		)
+		{ after(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); }
+		(
+			{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); }
+			'::'
+			{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); }
+		)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); }
+		(
+			{ before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_0_2_0_1()); }
+			ruleFeatureCallID
+			{ after(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_0_2_0_1()); }
+		)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__ValueAssignment_1_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); }
+		ruleXAssignment
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); }
+		(
+			{ before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); }
+			'?.'
+			{ after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); }
+		)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); }
+		(
+			{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); }
+			'::'
+			{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); }
+		)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__FeatureAssignment_1_1_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); }
+		(
+			{ before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_1_2_0_1()); }
+			ruleIdOrSuper
+			{ after(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_1_2_0_1()); }
+		)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); }
+		(
+			{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); }
+			'('
+			{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); }
+		)
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); }
+		ruleXShortClosure
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); }
+		ruleXClosure
+		{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__ElementsAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSetLiteral__ElementsAssignment_3_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__ElementsAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XListLiteral__ElementsAssignment_3_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); }
+		ruleJvmFormalParameter
+		{ after(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); }
+		ruleJvmFormalParameter
+		{ after(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__ExplicitSyntaxAssignment_1_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); }
+		(
+			{ before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); }
+			'|'
+			{ after(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); }
+		)
+		{ after(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XClosure__ExpressionAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); }
+		ruleXExpressionInClosure
+		{ after(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionInClosure__ExpressionsAssignment_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); }
+		ruleXExpressionOrVarDeclaration
+		{ after(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); }
+		ruleJvmFormalParameter
+		{ after(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); }
+		ruleJvmFormalParameter
+		{ after(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); }
+		(
+			{ before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); }
+			'|'
+			{ after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); }
+		)
+		{ after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XShortClosure__ExpressionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__IfAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__ThenAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XIfExpression__ElseAssignment_6_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); }
+		ruleJvmFormalParameter
+		{ after(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__SwitchAssignment_2_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); }
+		ruleJvmFormalParameter
+		{ after(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__SwitchAssignment_2_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__CasesAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); }
+		ruleXCasePart
+		{ after(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__DefaultAssignment_5_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__TypeGuardAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__CaseAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__ThenAssignment_3_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__FallThroughAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); }
+		(
+			{ before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); }
+			','
+			{ after(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); }
+		)
+		{ after(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); }
+		ruleJvmFormalParameter
+		{ after(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__ForExpressionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XForLoopExpression__EachExpressionAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); }
+		ruleXExpressionOrVarDeclaration
+		{ after(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); }
+		ruleXExpressionOrVarDeclaration
+		{ after(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__ExpressionAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBasicForLoopExpression__EachExpressionAssignment_9
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__PredicateAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XWhileExpression__BodyAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__BodyAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XDoWhileExpression__PredicateAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBlockExpression__ExpressionsAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); }
+		ruleXExpressionOrVarDeclaration
+		{ after(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__WriteableAssignment_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); }
+		(
+			{ before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); }
+			'var'
+			{ after(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); }
+		)
+		{ after(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__TypeAssignment_2_0_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__NameAssignment_2_0_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); }
+		ruleValidID
+		{ after(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__NameAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); }
+		ruleValidID
+		{ after(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__RightAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmFormalParameter__ParameterTypeAssignment_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmFormalParameter__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); }
+		ruleValidID
+		{ after(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FullJvmFormalParameter__ParameterTypeAssignment_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FullJvmFormalParameter__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); }
+		ruleValidID
+		{ after(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__TypeArgumentsAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__FeatureAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_2_0_1()); }
+			ruleIdOrSuper
+			{ after(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); }
+		(
+			{ before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); }
+			'('
+			{ after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); }
+		)
+		{ after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); }
+		ruleXShortClosure
+		{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); }
+		ruleXClosure
+		{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__ConstructorAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); }
+		(
+			{ before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1()); }
+		)
+		{ after(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__TypeArgumentsAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); }
+		(
+			{ before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); }
+			'('
+			{ after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); }
+		)
+		{ after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__ArgumentsAssignment_4_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); }
+		ruleXShortClosure
+		{ after(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__ArgumentsAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); }
+		ruleXClosure
+		{ after(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBooleanLiteral__IsTrueAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); }
+		(
+			{ before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); }
+			'true'
+			{ after(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); }
+		)
+		{ after(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XNumberLiteral__ValueAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); }
+		ruleNumber
+		{ after(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XStringLiteral__ValueAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__TypeAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); }
+		(
+			{ before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeQualifiedNameParserRuleCall_3_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeQualifiedNameParserRuleCall_3_0_1()); }
+		)
+		{ after(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTypeLiteral__ArrayDimensionsAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); }
+		ruleArrayBrackets
+		{ after(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XThrowExpression__ExpressionAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XReturnExpression__ExpressionAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__ExpressionAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); }
+		ruleXCatchClause
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__ParamAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSynchronizedExpression__ExpressionAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__DeclaredParamAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); }
+		ruleFullJvmFormalParameter
+		{ after(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCatchClause__ExpressionAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); }
+		ruleXExpression
+		{ after(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFunctionTypeRef__ReturnTypeAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__TypeAssignment_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); }
+		(
+			{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeQualifiedNameParserRuleCall_0_0_1()); }
+			ruleQualifiedName
+			{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeQualifiedNameParserRuleCall_0_0_1()); }
+		)
+		{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); }
+		(
+			{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeValidIDParserRuleCall_1_4_1_0_1()); }
+			ruleValidID
+			{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeValidIDParserRuleCall_1_4_1_0_1()); }
+		)
+		{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); }
+		ruleJvmArgumentTypeReference
+		{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); }
+		ruleJvmUpperBound
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); }
+		ruleJvmUpperBoundAnded
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); }
+		ruleJvmLowerBound
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); }
+		ruleJvmLowerBoundAnded
+		{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmUpperBound__TypeReferenceAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmLowerBound__TypeReferenceAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); }
+		ruleJvmTypeReference
+		{ after(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportSection__ImportDeclarationsAssignment
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0()); }
+		ruleXImportDeclaration
+		{ after(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
+
+RULE_INT : '0'..'9' ('0'..'9'|'_')*;
+
+RULE_DECIMAL : RULE_INT (('e'|'E') ('+'|'-')? RULE_INT)? (('b'|'B') ('i'|'I'|'d'|'D')|('l'|'L'|'d'|'D'|'f'|'F'))?;
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'?|'\'' ('\\' .|~(('\\'|'\'')))* '\''?);
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
diff --git a/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSL.tokens b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSL.tokens
new file mode 100644
index 0000000..347eb01
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSL.tokens
@@ -0,0 +1,265 @@
+'!'=42
+'!='=24
+'!=='=26
+'#'=105
+'%'=41
+'%='=22
+'&&'=15
+'&'=128
+'('=101
+')'=102
+'*'=38
+'**'=39
+'*='=20
+'+'=36
+'++'=43
+'+='=18
+','=103
+'-'=37
+'--'=44
+'-='=19
+'->'=30
+'.'=45
+'..'=32
+'..<'=31
+'/'=40
+'/='=21
+':'=112
+'::'=136
+';'=99
+'<'=29
+'<>'=34
+'='=13
+'=='=23
+'==='=25
+'=>'=33
+'>'=28
+'>='=27
+'?'=127
+'?.'=137
+'?:'=35
+'@'=100
+'Activate'=65
+'AddAll'=68
+'Cancel'=72
+'Claim'=53
+'Complete'=59
+'Delegate'=60
+'Delete'=71
+'Download'=16
+'Exit'=66
+'Export'=75
+'Fail'=62
+'Forward'=61
+'Import'=74
+'New'=69
+'NextPart'=76
+'PreviousPart'=77
+'PrintOnServer'=73
+'Register'=63
+'Release'=55
+'Remove'=64
+'RemoveAll'=67
+'Resume'=57
+'Save'=70
+'Skip'=58
+'Start'=17
+'Stop'=54
+'Suspend'=56
+'['=106
+']'=104
+'as'=108
+'canExecute'=96
+'case'=114
+'catch'=126
+'chartAction'=90
+'command'=81
+'datainterchangeAction'=92
+'default'=113
+'describedBy'=129
+'dialogAction'=88
+'do'=117
+'else'=110
+'executeImmediate'=131
+'executeLater'=134
+'extends'=47
+'extension'=50
+'false'=52
+'finally'=124
+'for'=115
+'functionalAction'=94
+'group'=95
+'icon'=85
+'if'=109
+'import'=49
+'instanceof'=107
+'item'=84
+'items'=83
+'keyBinding'=130
+'messageCategory'=132
+'new'=118
+'ns'=135
+'null'=119
+'onFailMessage'=97
+'onStartedMessage'=98
+'onSuccessMessage'=133
+'package'=78
+'reportAction'=89
+'return'=122
+'selectWorkloadAction'=87
+'static'=48
+'super'=51
+'switch'=111
+'synchronized'=125
+'taskAction'=86
+'throw'=121
+'toolbar'=82
+'true'=140
+'try'=123
+'typeof'=120
+'userinterfaceAction'=93
+'val'=46
+'var'=139
+'while'=116
+'workflowAction'=91
+'{'=79
+'|'=138
+'||'=14
+'}'=80
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=6
+RULE_ID=4
+RULE_INT=7
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=5
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSLLexer.java b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSLLexer.java
new file mode 100644
index 0000000..7663650
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSLLexer.java
@@ -0,0 +1,5529 @@
+package org.eclipse.osbp.xtext.action.ide.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalActionDSLLexer extends Lexer {
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__140=140;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    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
+
+    public InternalActionDSLLexer() {;} 
+    public InternalActionDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalActionDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "InternalActionDSL.g"; }
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:11:7: ( '=' )
+            // InternalActionDSL.g:11:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:12:7: ( '||' )
+            // InternalActionDSL.g:12:9: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:13:7: ( '&&' )
+            // InternalActionDSL.g:13:9: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:14:7: ( 'Download' )
+            // InternalActionDSL.g:14:9: 'Download'
+            {
+            match("Download"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:15:7: ( 'Start' )
+            // InternalActionDSL.g:15:9: 'Start'
+            {
+            match("Start"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:16:7: ( '+=' )
+            // InternalActionDSL.g:16:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:17:7: ( '-=' )
+            // InternalActionDSL.g:17:9: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:18:7: ( '*=' )
+            // InternalActionDSL.g:18:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:19:7: ( '/=' )
+            // InternalActionDSL.g:19:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:20:7: ( '%=' )
+            // InternalActionDSL.g:20:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:21:7: ( '==' )
+            // InternalActionDSL.g:21:9: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22:7: ( '!=' )
+            // InternalActionDSL.g:22:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:23:7: ( '===' )
+            // InternalActionDSL.g:23:9: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:24:7: ( '!==' )
+            // InternalActionDSL.g:24:9: '!=='
+            {
+            match("!=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:25:7: ( '>=' )
+            // InternalActionDSL.g:25:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:26:7: ( '>' )
+            // InternalActionDSL.g:26:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:27:7: ( '<' )
+            // InternalActionDSL.g:27:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:28:7: ( '->' )
+            // InternalActionDSL.g:28:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:29:7: ( '..<' )
+            // InternalActionDSL.g:29:9: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:30:7: ( '..' )
+            // InternalActionDSL.g:30:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:31:7: ( '=>' )
+            // InternalActionDSL.g:31:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:32:7: ( '<>' )
+            // InternalActionDSL.g:32:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:33:7: ( '?:' )
+            // InternalActionDSL.g:33:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:34:7: ( '+' )
+            // InternalActionDSL.g:34:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:35:7: ( '-' )
+            // InternalActionDSL.g:35:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:36:7: ( '*' )
+            // InternalActionDSL.g:36:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:37:7: ( '**' )
+            // InternalActionDSL.g:37:9: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
+        try {
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:38:7: ( '/' )
+            // InternalActionDSL.g:38:9: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__40"
+
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
+        try {
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:39:7: ( '%' )
+            // InternalActionDSL.g:39:9: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__41"
+
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
+        try {
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:40:7: ( '!' )
+            // InternalActionDSL.g:40:9: '!'
+            {
+            match('!'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__42"
+
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
+        try {
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:41:7: ( '++' )
+            // InternalActionDSL.g:41:9: '++'
+            {
+            match("++"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__43"
+
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
+        try {
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:42:7: ( '--' )
+            // InternalActionDSL.g:42:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:43:7: ( '.' )
+            // InternalActionDSL.g:43:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:44:7: ( 'val' )
+            // InternalActionDSL.g:44:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__46"
+
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
+        try {
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:45:7: ( 'extends' )
+            // InternalActionDSL.g:45:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__47"
+
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
+        try {
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:46:7: ( 'static' )
+            // InternalActionDSL.g:46:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:47:7: ( 'import' )
+            // InternalActionDSL.g:47:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:48:7: ( 'extension' )
+            // InternalActionDSL.g:48:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:49:7: ( 'super' )
+            // InternalActionDSL.g:49:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:50:7: ( 'false' )
+            // InternalActionDSL.g:50:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:51:7: ( 'Claim' )
+            // InternalActionDSL.g:51:9: 'Claim'
+            {
+            match("Claim"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__53"
+
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
+        try {
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:52:7: ( 'Stop' )
+            // InternalActionDSL.g:52:9: 'Stop'
+            {
+            match("Stop"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__54"
+
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
+        try {
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:53:7: ( 'Release' )
+            // InternalActionDSL.g:53:9: 'Release'
+            {
+            match("Release"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__55"
+
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
+        try {
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:54:7: ( 'Suspend' )
+            // InternalActionDSL.g:54:9: 'Suspend'
+            {
+            match("Suspend"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__56"
+
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
+        try {
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:55:7: ( 'Resume' )
+            // InternalActionDSL.g:55:9: 'Resume'
+            {
+            match("Resume"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:56:7: ( 'Skip' )
+            // InternalActionDSL.g:56:9: 'Skip'
+            {
+            match("Skip"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:57:7: ( 'Complete' )
+            // InternalActionDSL.g:57:9: 'Complete'
+            {
+            match("Complete"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:58:7: ( 'Delegate' )
+            // InternalActionDSL.g:58:9: 'Delegate'
+            {
+            match("Delegate"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__60"
+
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
+        try {
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:59:7: ( 'Forward' )
+            // InternalActionDSL.g:59:9: 'Forward'
+            {
+            match("Forward"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__61"
+
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
+        try {
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:60:7: ( 'Fail' )
+            // InternalActionDSL.g:60:9: 'Fail'
+            {
+            match("Fail"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "T__63"
+    public final void mT__63() throws RecognitionException {
+        try {
+            int _type = T__63;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:61:7: ( 'Register' )
+            // InternalActionDSL.g:61:9: 'Register'
+            {
+            match("Register"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__63"
+
+    // $ANTLR start "T__64"
+    public final void mT__64() throws RecognitionException {
+        try {
+            int _type = T__64;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:62:7: ( 'Remove' )
+            // InternalActionDSL.g:62:9: 'Remove'
+            {
+            match("Remove"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__64"
+
+    // $ANTLR start "T__65"
+    public final void mT__65() throws RecognitionException {
+        try {
+            int _type = T__65;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:63:7: ( 'Activate' )
+            // InternalActionDSL.g:63:9: 'Activate'
+            {
+            match("Activate"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__65"
+
+    // $ANTLR start "T__66"
+    public final void mT__66() throws RecognitionException {
+        try {
+            int _type = T__66;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:64:7: ( 'Exit' )
+            // InternalActionDSL.g:64:9: 'Exit'
+            {
+            match("Exit"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__66"
+
+    // $ANTLR start "T__67"
+    public final void mT__67() throws RecognitionException {
+        try {
+            int _type = T__67;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:65:7: ( 'RemoveAll' )
+            // InternalActionDSL.g:65:9: 'RemoveAll'
+            {
+            match("RemoveAll"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__67"
+
+    // $ANTLR start "T__68"
+    public final void mT__68() throws RecognitionException {
+        try {
+            int _type = T__68;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:66:7: ( 'AddAll' )
+            // InternalActionDSL.g:66:9: 'AddAll'
+            {
+            match("AddAll"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__68"
+
+    // $ANTLR start "T__69"
+    public final void mT__69() throws RecognitionException {
+        try {
+            int _type = T__69;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:67:7: ( 'New' )
+            // InternalActionDSL.g:67:9: 'New'
+            {
+            match("New"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__69"
+
+    // $ANTLR start "T__70"
+    public final void mT__70() throws RecognitionException {
+        try {
+            int _type = T__70;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:68:7: ( 'Save' )
+            // InternalActionDSL.g:68:9: 'Save'
+            {
+            match("Save"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__70"
+
+    // $ANTLR start "T__71"
+    public final void mT__71() throws RecognitionException {
+        try {
+            int _type = T__71;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:69:7: ( 'Delete' )
+            // InternalActionDSL.g:69:9: 'Delete'
+            {
+            match("Delete"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:70:7: ( 'Cancel' )
+            // InternalActionDSL.g:70:9: 'Cancel'
+            {
+            match("Cancel"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__72"
+
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
+        try {
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:71:7: ( 'PrintOnServer' )
+            // InternalActionDSL.g:71:9: 'PrintOnServer'
+            {
+            match("PrintOnServer"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__73"
+
+    // $ANTLR start "T__74"
+    public final void mT__74() throws RecognitionException {
+        try {
+            int _type = T__74;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:72:7: ( 'Import' )
+            // InternalActionDSL.g:72:9: 'Import'
+            {
+            match("Import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__74"
+
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
+        try {
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:73:7: ( 'Export' )
+            // InternalActionDSL.g:73:9: 'Export'
+            {
+            match("Export"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:74:7: ( 'NextPart' )
+            // InternalActionDSL.g:74:9: 'NextPart'
+            {
+            match("NextPart"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:75:7: ( 'PreviousPart' )
+            // InternalActionDSL.g:75:9: 'PreviousPart'
+            {
+            match("PreviousPart"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__77"
+
+    // $ANTLR start "T__78"
+    public final void mT__78() throws RecognitionException {
+        try {
+            int _type = T__78;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:76:7: ( 'package' )
+            // InternalActionDSL.g:76:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:77:7: ( '{' )
+            // InternalActionDSL.g:77:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:78:7: ( '}' )
+            // InternalActionDSL.g:78:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:79:7: ( 'command' )
+            // InternalActionDSL.g:79:9: 'command'
+            {
+            match("command"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__81"
+
+    // $ANTLR start "T__82"
+    public final void mT__82() throws RecognitionException {
+        try {
+            int _type = T__82;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:80:7: ( 'toolbar' )
+            // InternalActionDSL.g:80:9: 'toolbar'
+            {
+            match("toolbar"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__82"
+
+    // $ANTLR start "T__83"
+    public final void mT__83() throws RecognitionException {
+        try {
+            int _type = T__83;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:81:7: ( 'items' )
+            // InternalActionDSL.g:81:9: 'items'
+            {
+            match("items"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__83"
+
+    // $ANTLR start "T__84"
+    public final void mT__84() throws RecognitionException {
+        try {
+            int _type = T__84;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:82:7: ( 'item' )
+            // InternalActionDSL.g:82:9: 'item'
+            {
+            match("item"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:83:7: ( 'icon' )
+            // InternalActionDSL.g:83:9: 'icon'
+            {
+            match("icon"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__85"
+
+    // $ANTLR start "T__86"
+    public final void mT__86() throws RecognitionException {
+        try {
+            int _type = T__86;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:84:7: ( 'taskAction' )
+            // InternalActionDSL.g:84:9: 'taskAction'
+            {
+            match("taskAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__86"
+
+    // $ANTLR start "T__87"
+    public final void mT__87() throws RecognitionException {
+        try {
+            int _type = T__87;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:85:7: ( 'selectWorkloadAction' )
+            // InternalActionDSL.g:85:9: 'selectWorkloadAction'
+            {
+            match("selectWorkloadAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:86:7: ( 'dialogAction' )
+            // InternalActionDSL.g:86:9: 'dialogAction'
+            {
+            match("dialogAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:87:7: ( 'reportAction' )
+            // InternalActionDSL.g:87:9: 'reportAction'
+            {
+            match("reportAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:88:7: ( 'chartAction' )
+            // InternalActionDSL.g:88:9: 'chartAction'
+            {
+            match("chartAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:89:7: ( 'workflowAction' )
+            // InternalActionDSL.g:89:9: 'workflowAction'
+            {
+            match("workflowAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:90:7: ( 'datainterchangeAction' )
+            // InternalActionDSL.g:90:9: 'datainterchangeAction'
+            {
+            match("datainterchangeAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:91:7: ( 'userinterfaceAction' )
+            // InternalActionDSL.g:91:9: 'userinterfaceAction'
+            {
+            match("userinterfaceAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:92:7: ( 'functionalAction' )
+            // InternalActionDSL.g:92:9: 'functionalAction'
+            {
+            match("functionalAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__94"
+
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
+        try {
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:93:7: ( 'group' )
+            // InternalActionDSL.g:93:9: 'group'
+            {
+            match("group"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__95"
+
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
+        try {
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:94:7: ( 'canExecute' )
+            // InternalActionDSL.g:94:9: 'canExecute'
+            {
+            match("canExecute"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__96"
+
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
+        try {
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:95:7: ( 'onFailMessage' )
+            // InternalActionDSL.g:95:9: 'onFailMessage'
+            {
+            match("onFailMessage"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__97"
+
+    // $ANTLR start "T__98"
+    public final void mT__98() throws RecognitionException {
+        try {
+            int _type = T__98;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:96:7: ( 'onStartedMessage' )
+            // InternalActionDSL.g:96:9: 'onStartedMessage'
+            {
+            match("onStartedMessage"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__98"
+
+    // $ANTLR start "T__99"
+    public final void mT__99() throws RecognitionException {
+        try {
+            int _type = T__99;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:97:7: ( ';' )
+            // InternalActionDSL.g:97:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__99"
+
+    // $ANTLR start "T__100"
+    public final void mT__100() throws RecognitionException {
+        try {
+            int _type = T__100;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:98:8: ( '@' )
+            // InternalActionDSL.g:98:10: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__100"
+
+    // $ANTLR start "T__101"
+    public final void mT__101() throws RecognitionException {
+        try {
+            int _type = T__101;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:99:8: ( '(' )
+            // InternalActionDSL.g:99:10: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__101"
+
+    // $ANTLR start "T__102"
+    public final void mT__102() throws RecognitionException {
+        try {
+            int _type = T__102;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:100:8: ( ')' )
+            // InternalActionDSL.g:100:10: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $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;
+            // InternalActionDSL.g:101:8: ( ',' )
+            // InternalActionDSL.g:101:10: ','
+            {
+            match(','); 
+
+            }
+
+            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;
+            // InternalActionDSL.g:102:8: ( ']' )
+            // InternalActionDSL.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;
+            // InternalActionDSL.g:103:8: ( '#' )
+            // InternalActionDSL.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;
+            // InternalActionDSL.g:104:8: ( '[' )
+            // InternalActionDSL.g:104:10: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
+    // $ANTLR start "T__107"
+    public final void mT__107() throws RecognitionException {
+        try {
+            int _type = T__107;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:105:8: ( 'instanceof' )
+            // InternalActionDSL.g:105:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__107"
+
+    // $ANTLR start "T__108"
+    public final void mT__108() throws RecognitionException {
+        try {
+            int _type = T__108;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:106:8: ( 'as' )
+            // InternalActionDSL.g:106:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__108"
+
+    // $ANTLR start "T__109"
+    public final void mT__109() throws RecognitionException {
+        try {
+            int _type = T__109;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:107:8: ( 'if' )
+            // InternalActionDSL.g:107:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__109"
+
+    // $ANTLR start "T__110"
+    public final void mT__110() throws RecognitionException {
+        try {
+            int _type = T__110;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:108:8: ( 'else' )
+            // InternalActionDSL.g:108:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__110"
+
+    // $ANTLR start "T__111"
+    public final void mT__111() throws RecognitionException {
+        try {
+            int _type = T__111;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:109:8: ( 'switch' )
+            // InternalActionDSL.g:109:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__111"
+
+    // $ANTLR start "T__112"
+    public final void mT__112() throws RecognitionException {
+        try {
+            int _type = T__112;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:110:8: ( ':' )
+            // InternalActionDSL.g:110:10: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__112"
+
+    // $ANTLR start "T__113"
+    public final void mT__113() throws RecognitionException {
+        try {
+            int _type = T__113;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:111:8: ( 'default' )
+            // InternalActionDSL.g:111:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__113"
+
+    // $ANTLR start "T__114"
+    public final void mT__114() throws RecognitionException {
+        try {
+            int _type = T__114;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:112:8: ( 'case' )
+            // InternalActionDSL.g:112:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__114"
+
+    // $ANTLR start "T__115"
+    public final void mT__115() throws RecognitionException {
+        try {
+            int _type = T__115;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:113:8: ( 'for' )
+            // InternalActionDSL.g:113:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__115"
+
+    // $ANTLR start "T__116"
+    public final void mT__116() throws RecognitionException {
+        try {
+            int _type = T__116;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:114:8: ( 'while' )
+            // InternalActionDSL.g:114:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__116"
+
+    // $ANTLR start "T__117"
+    public final void mT__117() throws RecognitionException {
+        try {
+            int _type = T__117;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:115:8: ( 'do' )
+            // InternalActionDSL.g:115:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__117"
+
+    // $ANTLR start "T__118"
+    public final void mT__118() throws RecognitionException {
+        try {
+            int _type = T__118;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:116:8: ( 'new' )
+            // InternalActionDSL.g:116:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__118"
+
+    // $ANTLR start "T__119"
+    public final void mT__119() throws RecognitionException {
+        try {
+            int _type = T__119;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:117:8: ( 'null' )
+            // InternalActionDSL.g:117:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__119"
+
+    // $ANTLR start "T__120"
+    public final void mT__120() throws RecognitionException {
+        try {
+            int _type = T__120;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:118:8: ( 'typeof' )
+            // InternalActionDSL.g:118:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__120"
+
+    // $ANTLR start "T__121"
+    public final void mT__121() throws RecognitionException {
+        try {
+            int _type = T__121;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:119:8: ( 'throw' )
+            // InternalActionDSL.g:119:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__121"
+
+    // $ANTLR start "T__122"
+    public final void mT__122() throws RecognitionException {
+        try {
+            int _type = T__122;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:120:8: ( 'return' )
+            // InternalActionDSL.g:120:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__122"
+
+    // $ANTLR start "T__123"
+    public final void mT__123() throws RecognitionException {
+        try {
+            int _type = T__123;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:121:8: ( 'try' )
+            // InternalActionDSL.g:121:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__123"
+
+    // $ANTLR start "T__124"
+    public final void mT__124() throws RecognitionException {
+        try {
+            int _type = T__124;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:122:8: ( 'finally' )
+            // InternalActionDSL.g:122:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__124"
+
+    // $ANTLR start "T__125"
+    public final void mT__125() throws RecognitionException {
+        try {
+            int _type = T__125;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:123:8: ( 'synchronized' )
+            // InternalActionDSL.g:123:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "T__126"
+    public final void mT__126() throws RecognitionException {
+        try {
+            int _type = T__126;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:124:8: ( 'catch' )
+            // InternalActionDSL.g:124:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__126"
+
+    // $ANTLR start "T__127"
+    public final void mT__127() throws RecognitionException {
+        try {
+            int _type = T__127;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:125:8: ( '?' )
+            // InternalActionDSL.g:125:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__127"
+
+    // $ANTLR start "T__128"
+    public final void mT__128() throws RecognitionException {
+        try {
+            int _type = T__128;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:126:8: ( '&' )
+            // InternalActionDSL.g:126:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__128"
+
+    // $ANTLR start "T__129"
+    public final void mT__129() throws RecognitionException {
+        try {
+            int _type = T__129;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:127:8: ( 'describedBy' )
+            // InternalActionDSL.g:127:10: 'describedBy'
+            {
+            match("describedBy"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__129"
+
+    // $ANTLR start "T__130"
+    public final void mT__130() throws RecognitionException {
+        try {
+            int _type = T__130;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:128:8: ( 'keyBinding' )
+            // InternalActionDSL.g:128:10: 'keyBinding'
+            {
+            match("keyBinding"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__130"
+
+    // $ANTLR start "T__131"
+    public final void mT__131() throws RecognitionException {
+        try {
+            int _type = T__131;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:129:8: ( 'executeImmediate' )
+            // InternalActionDSL.g:129:10: 'executeImmediate'
+            {
+            match("executeImmediate"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:130:8: ( 'messageCategory' )
+            // InternalActionDSL.g:130:10: 'messageCategory'
+            {
+            match("messageCategory"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:131:8: ( 'onSuccessMessage' )
+            // InternalActionDSL.g:131:10: 'onSuccessMessage'
+            {
+            match("onSuccessMessage"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__133"
+
+    // $ANTLR start "T__134"
+    public final void mT__134() throws RecognitionException {
+        try {
+            int _type = T__134;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:132:8: ( 'executeLater' )
+            // InternalActionDSL.g:132:10: 'executeLater'
+            {
+            match("executeLater"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__134"
+
+    // $ANTLR start "T__135"
+    public final void mT__135() throws RecognitionException {
+        try {
+            int _type = T__135;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:133:8: ( 'ns' )
+            // InternalActionDSL.g:133:10: 'ns'
+            {
+            match("ns"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:134:8: ( '::' )
+            // InternalActionDSL.g:134:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__136"
+
+    // $ANTLR start "T__137"
+    public final void mT__137() throws RecognitionException {
+        try {
+            int _type = T__137;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:135:8: ( '?.' )
+            // InternalActionDSL.g:135:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__137"
+
+    // $ANTLR start "T__138"
+    public final void mT__138() throws RecognitionException {
+        try {
+            int _type = T__138;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:136:8: ( '|' )
+            // InternalActionDSL.g:136:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__138"
+
+    // $ANTLR start "T__139"
+    public final void mT__139() throws RecognitionException {
+        try {
+            int _type = T__139;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:137:8: ( 'var' )
+            // InternalActionDSL.g:137:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__139"
+
+    // $ANTLR start "T__140"
+    public final void mT__140() throws RecognitionException {
+        try {
+            int _type = T__140;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:138:8: ( 'true' )
+            // InternalActionDSL.g:138:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__140"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22450:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalActionDSL.g:22450:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // InternalActionDSL.g:22450:12: ( '0x' | '0X' )
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='0') ) {
+                int LA1_1 = input.LA(2);
+
+                if ( (LA1_1=='x') ) {
+                    alt1=1;
+                }
+                else if ( (LA1_1=='X') ) {
+                    alt1=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 1, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalActionDSL.g:22450:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:22450:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:22450:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            int cnt2=0;
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='F')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='f')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // InternalActionDSL.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='f') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt2 >= 1 ) break loop2;
+                        EarlyExitException eee =
+                            new EarlyExitException(2, input);
+                        throw eee;
+                }
+                cnt2++;
+            } while (true);
+
+            // InternalActionDSL.g:22450:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0=='#') ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // InternalActionDSL.g:22450:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // InternalActionDSL.g:22450:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    int alt3=2;
+                    int LA3_0 = input.LA(1);
+
+                    if ( (LA3_0=='B'||LA3_0=='b') ) {
+                        alt3=1;
+                    }
+                    else if ( (LA3_0=='L'||LA3_0=='l') ) {
+                        alt3=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 3, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt3) {
+                        case 1 :
+                            // InternalActionDSL.g:22450:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            {
+                            if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+                            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+                        case 2 :
+                            // InternalActionDSL.g:22450:84: ( 'l' | 'L' )
+                            {
+                            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_HEX"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22452:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalActionDSL.g:22452:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // InternalActionDSL.g:22452:21: ( '0' .. '9' | '_' )*
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( ((LA5_0>='0' && LA5_0<='9')||LA5_0=='_') ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // InternalActionDSL.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_DECIMAL"
+    public final void mRULE_DECIMAL() throws RecognitionException {
+        try {
+            int _type = RULE_DECIMAL;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22454:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalActionDSL.g:22454:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // InternalActionDSL.g:22454:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0=='E'||LA7_0=='e') ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // InternalActionDSL.g:22454:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    {
+                    if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    // InternalActionDSL.g:22454:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // InternalActionDSL.g:
+                            {
+                            if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+                    mRULE_INT(); 
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:22454:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            int alt8=3;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0=='B'||LA8_0=='b') ) {
+                alt8=1;
+            }
+            else if ( (LA8_0=='D'||LA8_0=='F'||LA8_0=='L'||LA8_0=='d'||LA8_0=='f'||LA8_0=='l') ) {
+                alt8=2;
+            }
+            switch (alt8) {
+                case 1 :
+                    // InternalActionDSL.g:22454:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    {
+                    if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    if ( input.LA(1)=='D'||input.LA(1)=='I'||input.LA(1)=='d'||input.LA(1)=='i' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:22454:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    {
+                    if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_DECIMAL"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22456:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalActionDSL.g:22456:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // InternalActionDSL.g:22456:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // InternalActionDSL.g:22456:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // InternalActionDSL.g:22456:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( (LA10_0=='$'||(LA10_0>='0' && LA10_0<='9')||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // InternalActionDSL.g:
+            	    {
+            	    if ( input.LA(1)=='$'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop10;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22458:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalActionDSL.g:22458:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // InternalActionDSL.g:22458:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0=='\"') ) {
+                alt15=1;
+            }
+            else if ( (LA15_0=='\'') ) {
+                alt15=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+            switch (alt15) {
+                case 1 :
+                    // InternalActionDSL.g:22458:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // InternalActionDSL.g:22458:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop11:
+                    do {
+                        int alt11=3;
+                        int LA11_0 = input.LA(1);
+
+                        if ( (LA11_0=='\\') ) {
+                            alt11=1;
+                        }
+                        else if ( ((LA11_0>='\u0000' && LA11_0<='!')||(LA11_0>='#' && LA11_0<='[')||(LA11_0>=']' && LA11_0<='\uFFFF')) ) {
+                            alt11=2;
+                        }
+
+
+                        switch (alt11) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:22458:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalActionDSL.g:22458:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop11;
+                        }
+                    } while (true);
+
+                    // InternalActionDSL.g:22458:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // InternalActionDSL.g:22458:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:22458:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // InternalActionDSL.g:22458:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop13:
+                    do {
+                        int alt13=3;
+                        int LA13_0 = input.LA(1);
+
+                        if ( (LA13_0=='\\') ) {
+                            alt13=1;
+                        }
+                        else if ( ((LA13_0>='\u0000' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) {
+                            alt13=2;
+                        }
+
+
+                        switch (alt13) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:22458:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalActionDSL.g:22458:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop13;
+                        }
+                    } while (true);
+
+                    // InternalActionDSL.g:22458:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // InternalActionDSL.g:22458:79: '\\''
+                            {
+                            match('\''); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22460:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalActionDSL.g:22460:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // InternalActionDSL.g:22460:24: ( options {greedy=false; } : . )*
+            loop16:
+            do {
+                int alt16=2;
+                int LA16_0 = input.LA(1);
+
+                if ( (LA16_0=='*') ) {
+                    int LA16_1 = input.LA(2);
+
+                    if ( (LA16_1=='/') ) {
+                        alt16=2;
+                    }
+                    else if ( ((LA16_1>='\u0000' && LA16_1<='.')||(LA16_1>='0' && LA16_1<='\uFFFF')) ) {
+                        alt16=1;
+                    }
+
+
+                }
+                else if ( ((LA16_0>='\u0000' && LA16_0<=')')||(LA16_0>='+' && LA16_0<='\uFFFF')) ) {
+                    alt16=1;
+                }
+
+
+                switch (alt16) {
+            	case 1 :
+            	    // InternalActionDSL.g:22460:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop16;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22462:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalActionDSL.g:22462:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // InternalActionDSL.g:22462:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFF')) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // InternalActionDSL.g:22462: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();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+            // InternalActionDSL.g:22462:40: ( ( '\\r' )? '\\n' )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0=='\n'||LA19_0=='\r') ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // InternalActionDSL.g:22462:41: ( '\\r' )? '\\n'
+                    {
+                    // InternalActionDSL.g:22462:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // InternalActionDSL.g:22462:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22464:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalActionDSL.g:22464:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // InternalActionDSL.g:22464:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt20=0;
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( ((LA20_0>='\t' && LA20_0<='\n')||LA20_0=='\r'||LA20_0==' ') ) {
+                    alt20=1;
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // InternalActionDSL.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt20 >= 1 ) break loop20;
+                        EarlyExitException eee =
+                            new EarlyExitException(20, input);
+                        throw eee;
+                }
+                cnt20++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:22466:16: ( . )
+            // InternalActionDSL.g:22466:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // InternalActionDSL.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 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=137;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // InternalActionDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // InternalActionDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // InternalActionDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // InternalActionDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // InternalActionDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // InternalActionDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // InternalActionDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // InternalActionDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // InternalActionDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // InternalActionDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // InternalActionDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // InternalActionDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // InternalActionDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // InternalActionDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // InternalActionDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // InternalActionDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // InternalActionDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // InternalActionDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // InternalActionDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // InternalActionDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // InternalActionDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // InternalActionDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // InternalActionDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // InternalActionDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // InternalActionDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // InternalActionDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // InternalActionDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // InternalActionDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // InternalActionDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // InternalActionDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // InternalActionDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // InternalActionDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // InternalActionDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // InternalActionDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // InternalActionDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // InternalActionDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // InternalActionDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // InternalActionDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // InternalActionDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // InternalActionDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // InternalActionDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // InternalActionDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // InternalActionDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // InternalActionDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // InternalActionDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // InternalActionDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // InternalActionDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // InternalActionDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // InternalActionDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // InternalActionDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // InternalActionDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // InternalActionDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // InternalActionDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // InternalActionDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // InternalActionDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // InternalActionDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // InternalActionDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // InternalActionDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // InternalActionDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // InternalActionDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // InternalActionDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // InternalActionDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // InternalActionDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // InternalActionDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // InternalActionDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // InternalActionDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // InternalActionDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // InternalActionDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // InternalActionDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // InternalActionDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // InternalActionDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // InternalActionDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // InternalActionDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // InternalActionDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // InternalActionDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // InternalActionDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // InternalActionDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // InternalActionDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // InternalActionDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // InternalActionDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // InternalActionDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // InternalActionDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // InternalActionDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // InternalActionDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // InternalActionDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // InternalActionDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // InternalActionDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // InternalActionDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // InternalActionDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // InternalActionDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // InternalActionDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // InternalActionDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // InternalActionDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // InternalActionDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // InternalActionDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // InternalActionDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // InternalActionDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // InternalActionDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // InternalActionDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // InternalActionDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // InternalActionDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // InternalActionDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // InternalActionDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // InternalActionDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // InternalActionDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // InternalActionDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // InternalActionDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // InternalActionDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // InternalActionDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // InternalActionDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // InternalActionDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // InternalActionDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // InternalActionDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // InternalActionDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // InternalActionDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // InternalActionDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // InternalActionDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // InternalActionDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // InternalActionDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // InternalActionDSL.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // InternalActionDSL.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // InternalActionDSL.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // InternalActionDSL.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // InternalActionDSL.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // InternalActionDSL.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // InternalActionDSL.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // InternalActionDSL.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // InternalActionDSL.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // InternalActionDSL.g:1:819: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 130 :
+                // InternalActionDSL.g:1:828: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 131 :
+                // InternalActionDSL.g:1:837: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 132 :
+                // InternalActionDSL.g:1:850: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 133 :
+                // InternalActionDSL.g:1:858: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 134 :
+                // InternalActionDSL.g:1:870: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 135 :
+                // InternalActionDSL.g:1:886: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 136 :
+                // InternalActionDSL.g:1:902: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 137 :
+                // InternalActionDSL.g:1:910: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\77\1\101\1\103\2\106\1\115\1\121\1\124\1\130\1\132\1\134\1\136\1\140\1\142\1\145\16\106\2\uffff\10\106\10\uffff\1\106\1\u00a2\3\106\2\u00aa\1\74\5\uffff\1\u00af\6\uffff\2\106\1\uffff\4\106\20\uffff\1\u00b8\5\uffff\1\u00ba\4\uffff\14\106\1\u00c9\21\106\2\uffff\13\106\1\u00f0\6\106\10\uffff\1\u00f9\2\uffff\2\106\1\u00fc\2\106\1\uffff\1\u00aa\6\uffff\7\106\4\uffff\1\u0106\1\u0107\14\106\1\uffff\2\106\1\u0116\16\106\1\u0125\16\106\1\u0134\5\106\1\uffff\10\106\1\uffff\1\u0143\1\106\1\uffff\5\106\1\u014b\1\106\1\u014d\1\u014e\2\uffff\2\106\1\u0151\6\106\1\u0159\1\u015a\3\106\1\uffff\11\106\1\u0167\2\106\1\u016a\1\106\1\uffff\10\106\1\u0174\5\106\1\uffff\1\u017a\15\106\1\uffff\1\u0188\5\106\1\u018e\1\uffff\1\106\2\uffff\2\106\1\uffff\1\106\1\u0194\4\106\1\u0199\2\uffff\1\106\1\u019b\2\106\1\u019e\7\106\1\uffff\2\106\1\uffff\11\106\1\uffff\1\u01b1\3\106\1\u01b5\1\uffff\7\106\1\u01bd\1\106\1\u01bf\3\106\1\uffff\4\106\1\u01c7\1\uffff\4\106\1\u01cc\1\uffff\1\106\1\u01ce\1\106\1\u01d0\1\uffff\1\106\1\uffff\2\106\1\uffff\1\106\1\u01d5\1\106\1\u01d7\1\106\1\u01da\2\106\1\u01dd\1\u01de\3\106\1\u01e2\4\106\1\uffff\2\106\1\u01e9\1\uffff\5\106\1\u01ef\1\106\1\uffff\1\106\1\uffff\7\106\1\uffff\1\u01f9\1\u01fa\2\106\1\uffff\1\106\1\uffff\1\106\1\uffff\2\106\1\u0202\1\106\1\uffff\1\u0204\1\uffff\2\106\1\uffff\1\u0207\1\106\2\uffff\3\106\1\uffff\1\u020c\1\u020d\2\106\1\u0210\1\106\1\uffff\2\106\1\u0214\2\106\1\uffff\7\106\1\u021e\1\u021f\2\uffff\7\106\1\uffff\1\u0227\1\uffff\1\u0228\1\106\1\uffff\1\u022a\1\u022b\2\106\2\uffff\2\106\1\uffff\3\106\1\uffff\11\106\2\uffff\1\u023c\6\106\2\uffff\1\u0243\2\uffff\20\106\1\uffff\4\106\1\u0258\1\106\1\uffff\3\106\1\u025d\1\u025e\11\106\1\u0268\5\106\1\uffff\3\106\1\u0271\2\uffff\2\106\1\u0274\6\106\1\uffff\2\106\1\u027d\1\106\1\u027f\2\106\1\u0282\1\uffff\1\u0283\1\106\1\uffff\1\u0285\7\106\1\uffff\1\106\1\uffff\1\106\1\u028f\2\uffff\1\106\1\uffff\2\106\1\u0293\6\106\1\uffff\1\106\1\u029b\1\106\1\uffff\7\106\1\uffff\3\106\1\u02a7\1\u02a8\1\106\1\u02aa\2\106\1\u02ad\1\u02ae\2\uffff\1\106\1\uffff\2\106\2\uffff\5\106\1\u02b7\1\u02b8\1\106\2\uffff\1\u02ba\1\uffff";
+    static final String DFA21_eofS =
+        "\u02bb\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\145\1\141\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154\1\145\1\143\2\141\1\145\1\141\1\143\1\170\1\145\1\162\1\155\1\141\2\uffff\3\141\1\145\1\150\1\163\1\162\1\156\10\uffff\1\163\1\72\3\145\2\60\1\44\5\uffff\1\75\6\uffff\1\167\1\154\1\uffff\1\141\1\163\1\151\1\166\20\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\145\1\163\1\141\1\160\1\154\1\151\1\156\1\160\1\145\1\157\1\163\1\44\1\154\1\156\1\162\1\156\1\141\1\155\1\156\1\147\1\162\1\151\1\164\1\144\1\151\1\167\1\145\1\160\1\143\2\uffff\1\155\1\141\1\156\1\157\1\163\1\160\1\162\1\165\1\141\1\164\1\146\1\44\1\160\1\162\1\151\1\145\1\157\1\106\10\uffff\1\44\2\uffff\1\167\1\154\1\44\1\171\1\163\1\uffff\1\60\6\uffff\1\156\1\145\1\162\3\160\1\145\4\uffff\2\44\1\145\1\143\1\145\1\164\2\145\1\164\1\143\1\157\1\155\1\156\1\164\1\uffff\1\163\1\143\1\44\1\141\1\151\1\160\1\143\1\145\1\165\1\151\1\157\1\167\1\154\1\151\1\101\1\164\1\157\1\44\1\164\1\156\1\166\1\157\1\153\1\155\1\162\1\105\1\145\1\143\1\154\1\153\1\145\1\157\1\44\1\145\1\154\2\141\1\143\1\uffff\1\157\1\165\1\153\1\154\1\162\1\165\1\141\1\164\1\uffff\1\44\1\154\1\uffff\1\102\1\163\1\154\1\147\1\164\1\44\1\145\2\44\2\uffff\1\156\1\165\1\44\1\151\1\162\2\143\1\150\1\162\2\44\1\141\1\145\1\164\1\uffff\1\154\1\155\1\154\1\145\1\141\1\155\1\163\1\166\1\141\1\44\1\166\1\154\1\44\1\162\1\uffff\1\120\1\164\1\151\1\162\2\141\1\164\1\170\1\44\1\150\1\142\1\101\1\157\1\167\1\uffff\1\44\1\157\1\151\1\165\3\162\1\146\1\145\1\151\1\160\1\151\1\141\1\143\1\uffff\1\44\1\151\1\141\1\157\1\141\1\145\1\44\1\uffff\1\156\2\uffff\1\144\1\164\1\uffff\1\143\1\44\1\164\1\150\1\162\1\164\1\44\2\uffff\1\156\1\44\1\151\1\154\1\44\1\145\1\154\1\163\1\145\1\164\1\145\1\162\1\uffff\1\141\1\154\1\uffff\1\164\1\141\1\117\1\157\1\164\1\147\1\156\1\101\1\145\1\uffff\1\44\1\141\1\143\1\146\1\44\1\uffff\1\147\1\156\1\154\1\151\1\164\1\156\1\154\1\44\1\156\1\44\1\154\1\162\1\143\1\uffff\1\156\1\147\1\141\1\164\1\44\1\uffff\1\144\1\163\1\151\1\145\1\44\1\uffff\1\127\1\44\1\157\1\44\1\uffff\1\143\1\uffff\1\157\1\171\1\uffff\1\164\1\44\1\145\1\44\1\145\1\44\1\144\1\164\2\44\1\162\1\156\1\165\1\44\1\145\1\144\2\143\1\uffff\1\162\1\164\1\44\1\uffff\1\101\2\164\1\142\1\101\1\44\1\157\1\uffff\1\164\1\uffff\1\115\1\164\1\145\1\144\1\145\1\144\1\145\1\uffff\2\44\1\157\1\111\1\uffff\1\157\1\uffff\1\156\1\uffff\1\145\1\156\1\44\1\145\1\uffff\1\44\1\uffff\1\162\1\154\1\uffff\1\44\1\145\2\uffff\1\164\1\123\1\163\1\uffff\2\44\1\164\1\165\1\44\1\151\1\uffff\1\143\1\145\1\44\1\145\1\143\1\uffff\1\167\3\145\1\163\1\151\1\103\2\44\2\uffff\1\156\1\155\1\141\1\162\1\151\1\157\1\141\1\uffff\1\44\1\uffff\1\44\1\154\1\uffff\2\44\1\145\1\120\2\uffff\1\151\1\164\1\uffff\1\157\1\164\1\162\1\uffff\1\144\1\164\1\101\1\162\1\163\1\144\1\163\1\156\1\141\2\uffff\1\44\1\155\1\164\1\153\1\172\1\146\1\154\2\uffff\1\44\2\uffff\1\162\1\141\1\157\1\145\1\156\1\151\1\143\1\102\1\151\1\143\1\146\1\163\2\115\1\147\1\164\1\uffff\2\145\1\154\1\145\1\44\1\101\1\uffff\1\166\1\162\1\156\2\44\1\157\1\150\1\171\1\157\1\164\2\141\2\145\1\44\1\145\1\144\1\162\1\157\1\144\1\uffff\1\143\1\145\1\164\1\44\2\uffff\1\156\1\141\1\44\1\156\1\151\1\143\1\147\2\163\1\uffff\1\147\1\151\1\44\1\141\1\44\1\164\1\162\1\44\1\uffff\1\44\1\156\1\uffff\1\44\1\157\2\145\2\163\1\157\1\141\1\uffff\1\144\1\uffff\1\151\1\44\2\uffff\1\147\1\uffff\1\156\1\101\1\44\2\141\1\162\1\164\1\101\1\157\1\uffff\1\145\1\44\1\143\1\uffff\2\147\1\171\1\145\1\143\1\156\1\101\1\uffff\1\164\2\145\2\44\1\164\1\44\1\143\1\151\2\44\2\uffff\1\151\1\uffff\1\164\1\157\2\uffff\1\157\1\151\2\156\1\157\2\44\1\156\2\uffff\1\44\1\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\157\1\165\1\75\1\76\5\75\1\76\1\56\1\72\1\141\1\170\1\171\1\164\1\165\1\157\1\145\1\157\1\144\1\170\1\145\1\162\1\155\1\141\2\uffff\1\157\1\171\1\157\1\145\1\157\1\163\1\162\1\156\10\uffff\1\163\1\72\1\165\2\145\1\170\1\154\1\172\5\uffff\1\75\6\uffff\1\167\1\154\1\uffff\1\157\1\163\1\151\1\166\20\uffff\1\75\5\uffff\1\74\4\uffff\1\162\1\164\1\163\1\141\1\160\1\154\1\151\1\156\1\160\1\145\1\157\1\163\1\172\1\154\1\156\1\162\1\156\1\141\1\155\1\156\1\163\1\162\1\151\1\164\1\144\1\160\1\170\1\151\1\160\1\143\2\uffff\1\155\1\141\1\164\1\157\1\163\1\160\1\162\1\171\1\141\1\164\1\163\1\172\1\164\1\162\1\151\1\145\1\157\1\123\10\uffff\1\172\2\uffff\1\167\1\154\1\172\1\171\1\163\1\uffff\1\154\6\uffff\1\156\1\145\1\162\3\160\1\145\4\uffff\2\172\1\145\1\143\1\145\1\164\2\145\1\164\1\143\1\157\1\155\1\156\1\164\1\uffff\1\163\1\143\1\172\1\141\1\151\1\160\1\143\1\145\1\165\1\151\1\157\1\167\1\154\1\151\1\101\1\164\1\157\1\172\1\164\1\156\1\166\1\157\1\153\1\155\1\162\1\105\1\145\1\143\1\154\1\153\1\145\1\157\1\172\1\145\1\154\2\141\1\143\1\uffff\1\157\1\165\1\153\1\154\1\162\1\165\1\141\1\165\1\uffff\1\172\1\154\1\uffff\1\102\1\163\1\154\2\164\1\172\1\145\2\172\2\uffff\1\156\1\165\1\172\1\151\1\162\2\143\1\150\1\162\2\172\1\141\1\145\1\164\1\uffff\1\154\1\155\1\154\1\145\1\141\1\155\1\163\1\166\1\141\1\172\1\166\1\154\1\172\1\162\1\uffff\1\120\1\164\1\151\1\162\2\141\1\164\1\170\1\172\1\150\1\142\1\101\1\157\1\167\1\uffff\1\172\1\157\1\151\1\165\3\162\1\146\1\145\1\151\1\160\1\151\1\141\1\143\1\uffff\1\172\1\151\1\141\1\157\1\141\1\145\1\172\1\uffff\1\156\2\uffff\1\163\1\164\1\uffff\1\143\1\172\1\164\1\150\1\162\1\164\1\172\2\uffff\1\156\1\172\1\151\1\154\1\172\1\145\1\154\1\163\1\145\1\164\1\145\1\162\1\uffff\1\141\1\154\1\uffff\1\164\1\141\1\117\1\157\1\164\1\147\1\156\1\101\1\145\1\uffff\1\172\1\141\1\143\1\146\1\172\1\uffff\1\147\1\156\1\154\1\151\1\164\1\156\1\154\1\172\1\156\1\172\1\154\1\162\1\143\1\uffff\1\156\1\147\1\141\1\164\1\172\1\uffff\1\144\1\163\1\151\1\145\1\172\1\uffff\1\127\1\172\1\157\1\172\1\uffff\1\143\1\uffff\1\157\1\171\1\uffff\1\164\1\172\1\145\1\172\1\145\1\172\1\144\1\164\2\172\1\162\1\156\1\165\1\172\1\145\1\144\2\143\1\uffff\1\162\1\164\1\172\1\uffff\1\101\2\164\1\142\1\101\1\172\1\157\1\uffff\1\164\1\uffff\1\115\1\164\1\145\1\144\1\145\1\144\1\145\1\uffff\2\172\1\157\1\114\1\uffff\1\157\1\uffff\1\156\1\uffff\1\145\1\156\1\172\1\145\1\uffff\1\172\1\uffff\1\162\1\154\1\uffff\1\172\1\145\2\uffff\1\164\1\123\1\163\1\uffff\2\172\1\164\1\165\1\172\1\151\1\uffff\1\143\1\145\1\172\1\145\1\143\1\uffff\1\167\3\145\1\163\1\151\1\103\2\172\2\uffff\1\156\1\155\1\141\1\162\1\151\1\157\1\141\1\uffff\1\172\1\uffff\1\172\1\154\1\uffff\2\172\1\145\1\120\2\uffff\1\151\1\164\1\uffff\1\157\1\164\1\162\1\uffff\1\144\1\164\1\101\1\162\1\163\1\144\1\163\1\156\1\141\2\uffff\1\172\1\155\1\164\1\153\1\172\1\146\1\154\2\uffff\1\172\2\uffff\1\162\1\141\1\157\1\145\1\156\1\151\1\143\1\102\1\151\1\143\1\146\1\163\2\115\1\147\1\164\1\uffff\2\145\1\154\1\145\1\172\1\101\1\uffff\1\166\1\162\1\156\2\172\1\157\1\150\1\171\1\157\1\164\2\141\2\145\1\172\1\145\1\144\1\162\1\157\1\144\1\uffff\1\143\1\145\1\164\1\172\2\uffff\1\156\1\141\1\172\1\156\1\151\1\143\1\147\2\163\1\uffff\1\147\1\151\1\172\1\141\1\172\1\164\1\162\1\172\1\uffff\1\172\1\156\1\uffff\1\172\1\157\2\145\2\163\1\157\1\141\1\uffff\1\144\1\uffff\1\151\1\172\2\uffff\1\147\1\uffff\1\156\1\101\1\172\2\141\1\162\1\164\1\101\1\157\1\uffff\1\145\1\172\1\143\1\uffff\2\147\1\171\1\145\1\143\1\156\1\101\1\uffff\1\164\2\145\2\172\1\164\1\172\1\143\1\151\2\172\2\uffff\1\151\1\uffff\1\164\1\157\2\uffff\1\157\1\151\2\156\1\157\2\172\1\156\2\uffff\1\172\1\uffff";
+    static final String DFA21_acceptS =
+        "\36\uffff\1\103\1\104\10\uffff\1\127\1\130\1\131\1\132\1\133\1\134\1\135\1\136\10\uffff\1\u0084\2\u0085\1\u0088\1\u0089\1\uffff\1\25\1\1\1\2\1\176\1\3\1\164\2\uffff\1\u0084\4\uffff\1\6\1\37\1\30\1\7\1\22\1\40\1\31\1\10\1\33\1\32\1\11\1\u0086\1\u0087\1\34\1\12\1\35\1\uffff\1\36\1\17\1\20\1\26\1\21\1\uffff\1\41\1\27\1\175\1\163\36\uffff\1\103\1\104\22\uffff\1\127\1\130\1\131\1\132\1\133\1\134\1\135\1\136\1\uffff\1\174\1\144\5\uffff\1\u0081\1\uffff\1\u0082\1\u0083\1\u0085\1\u0088\1\15\1\13\7\uffff\1\16\1\14\1\23\1\24\16\uffff\1\141\46\uffff\1\151\10\uffff\1\140\2\uffff\1\173\11\uffff\1\42\1\177\16\uffff\1\147\16\uffff\1\71\16\uffff\1\157\16\uffff\1\152\7\uffff\1\52\1\uffff\1\56\1\72\2\uffff\1\142\7\uffff\1\110\1\111\14\uffff\1\62\2\uffff\1\66\11\uffff\1\146\5\uffff\1\u0080\15\uffff\1\153\5\uffff\1\5\5\uffff\1\47\4\uffff\1\107\1\uffff\1\50\2\uffff\1\51\22\uffff\1\162\3\uffff\1\155\7\uffff\1\150\1\uffff\1\123\7\uffff\1\73\4\uffff\1\44\1\uffff\1\143\1\uffff\1\45\4\uffff\1\74\1\uffff\1\55\2\uffff\1\64\2\uffff\1\70\1\77\3\uffff\1\76\6\uffff\1\154\5\uffff\1\156\11\uffff\1\54\1\43\7\uffff\1\160\1\uffff\1\53\2\uffff\1\61\4\uffff\1\102\1\105\2\uffff\1\106\3\uffff\1\145\11\uffff\1\4\1\60\7\uffff\1\57\1\63\1\uffff\1\65\1\100\20\uffff\1\46\6\uffff\1\67\24\uffff\1\137\4\uffff\1\124\1\112\11\uffff\1\166\10\uffff\1\116\2\uffff\1\165\10\uffff\1\172\1\uffff\1\161\2\uffff\1\101\1\114\1\uffff\1\115\11\uffff\1\75\3\uffff\1\125\7\uffff\1\117\13\uffff\1\170\1\167\1\uffff\1\122\2\uffff\1\126\1\171\10\uffff\1\121\1\113\1\uffff\1\120";
+    static final String DFA21_specialS =
+        "\1\0\u02ba\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\74\2\73\2\74\1\73\22\74\1\73\1\13\1\71\1\56\1\70\1\12\1\3\1\72\1\52\1\53\1\10\1\6\1\54\1\7\1\16\1\11\1\65\11\66\1\61\1\50\1\15\1\1\1\14\1\17\1\51\1\30\1\70\1\25\1\4\1\31\1\27\2\70\1\34\4\70\1\32\1\70\1\33\1\70\1\26\1\5\7\70\1\57\1\74\1\55\1\67\1\70\1\74\1\60\1\70\1\40\1\42\1\21\1\24\1\46\1\70\1\23\1\70\1\63\1\70\1\64\1\62\1\47\1\35\1\70\1\43\1\22\1\41\1\45\1\20\1\44\3\70\1\36\1\2\1\37\uff82\74",
+            "\1\75\1\76",
+            "\1\100",
+            "\1\102",
+            "\1\105\11\uffff\1\104",
+            "\1\112\11\uffff\1\111\10\uffff\1\107\1\110",
+            "\1\114\21\uffff\1\113",
+            "\1\120\17\uffff\1\116\1\117",
+            "\1\123\22\uffff\1\122",
+            "\1\126\4\uffff\1\127\15\uffff\1\125",
+            "\1\131",
+            "\1\133",
+            "\1\135",
+            "\1\137",
+            "\1\141",
+            "\1\144\13\uffff\1\143",
+            "\1\146",
+            "\1\150\13\uffff\1\147",
+            "\1\153\16\uffff\1\151\1\152\1\uffff\1\154\1\uffff\1\155",
+            "\1\160\2\uffff\1\162\6\uffff\1\156\1\161\5\uffff\1\157",
+            "\1\163\7\uffff\1\166\5\uffff\1\165\5\uffff\1\164",
+            "\1\171\12\uffff\1\167\2\uffff\1\170",
+            "\1\172",
+            "\1\174\15\uffff\1\173",
+            "\1\175\1\176",
+            "\1\177",
+            "\1\u0080",
+            "\1\u0081",
+            "\1\u0082",
+            "\1\u0083",
+            "",
+            "",
+            "\1\u0088\6\uffff\1\u0087\6\uffff\1\u0086",
+            "\1\u008a\6\uffff\1\u008c\6\uffff\1\u0089\2\uffff\1\u008d\6\uffff\1\u008b",
+            "\1\u008f\3\uffff\1\u0090\3\uffff\1\u008e\5\uffff\1\u0091",
+            "\1\u0092",
+            "\1\u0094\6\uffff\1\u0093",
+            "\1\u0095",
+            "\1\u0096",
+            "\1\u0097",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a0",
+            "\1\u00a1",
+            "\1\u00a3\15\uffff\1\u00a5\1\uffff\1\u00a4",
+            "\1\u00a6",
+            "\1\u00a7",
+            "\12\u00a9\10\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab\13\uffff\1\u00a8\6\uffff\1\u00a9\2\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab\13\uffff\1\u00a8",
+            "\12\u00a9\10\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab\22\uffff\1\u00a9\2\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab",
+            "\1\106\34\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ae",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00b0",
+            "\1\u00b1",
+            "",
+            "\1\u00b2\15\uffff\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b6",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00b7",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00b9",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00bb\5\uffff\1\u00bc",
+            "\1\u00be\16\uffff\1\u00bd",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d3\4\uffff\1\u00d1\1\u00d4\5\uffff\1\u00d2",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9\6\uffff\1\u00da",
+            "\1\u00db\1\u00dc",
+            "\1\u00de\3\uffff\1\u00dd",
+            "\1\u00df",
+            "\1\u00e0",
+            "",
+            "",
+            "\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3\4\uffff\1\u00e4\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00eb\3\uffff\1\u00ea",
+            "\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee\14\uffff\1\u00ef",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u00f1\3\uffff\1\u00f2",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f5",
+            "\1\u00f6",
+            "\1\u00f7\14\uffff\1\u00f8",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u00fd",
+            "\1\u00fe",
+            "",
+            "\12\u00a9\10\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab\22\uffff\1\u00a9\2\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "",
+            "",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0117",
+            "\1\u0118",
+            "\1\u0119",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141\1\u0142",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0144",
+            "",
+            "\1\u0145",
+            "\1\u0146",
+            "\1\u0147",
+            "\1\u0148\14\uffff\1\u0149",
+            "\1\u014a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u014c",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\22\106\1\u0158\7\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\u0166",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u016b",
+            "",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u018f",
+            "",
+            "",
+            "\1\u0190\16\uffff\1\u0191",
+            "\1\u0192",
+            "",
+            "\1\u0193",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u019a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u019c",
+            "\1\u019d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u019f",
+            "\1\u01a0",
+            "\1\u01a1",
+            "\1\u01a2",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "",
+            "\1\u01a6",
+            "\1\u01a7",
+            "",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\u01b0",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01b2",
+            "\1\u01b3",
+            "\1\u01b4",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\u01bc",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01be",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u01cd",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01cf",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u01d1",
+            "",
+            "\1\u01d2",
+            "\1\u01d3",
+            "",
+            "\1\u01d4",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01d6",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01d8",
+            "\1\106\13\uffff\12\106\7\uffff\1\u01d9\31\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01db",
+            "\1\u01dc",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01df",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01e3",
+            "\1\u01e4",
+            "\1\u01e5",
+            "\1\u01e6",
+            "",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01f0",
+            "",
+            "\1\u01f1",
+            "",
+            "\1\u01f2",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\u01f5",
+            "\1\u01f6",
+            "\1\u01f7",
+            "\1\u01f8",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01fb",
+            "\1\u01fc\2\uffff\1\u01fd",
+            "",
+            "\1\u01fe",
+            "",
+            "\1\u01ff",
+            "",
+            "\1\u0200",
+            "\1\u0201",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0203",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u0205",
+            "\1\u0206",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0208",
+            "",
+            "",
+            "\1\u0209",
+            "\1\u020a",
+            "\1\u020b",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u020e",
+            "\1\u020f",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0211",
+            "",
+            "\1\u0212",
+            "\1\u0213",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0215",
+            "\1\u0216",
+            "",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\u0219",
+            "\1\u021a",
+            "\1\u021b",
+            "\1\u021c",
+            "\1\u021d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u0220",
+            "\1\u0221",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\u0226",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0229",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u022c",
+            "\1\u022d",
+            "",
+            "",
+            "\1\u022e",
+            "\1\u022f",
+            "",
+            "\1\u0230",
+            "\1\u0231",
+            "\1\u0232",
+            "",
+            "\1\u0233",
+            "\1\u0234",
+            "\1\u0235",
+            "\1\u0236",
+            "\1\u0237",
+            "\1\u0238",
+            "\1\u0239",
+            "\1\u023a",
+            "\1\u023b",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u023d",
+            "\1\u023e",
+            "\1\u023f",
+            "\1\u0240",
+            "\1\u0241",
+            "\1\u0242",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u0244",
+            "\1\u0245",
+            "\1\u0246",
+            "\1\u0247",
+            "\1\u0248",
+            "\1\u0249",
+            "\1\u024a",
+            "\1\u024b",
+            "\1\u024c",
+            "\1\u024d",
+            "\1\u024e",
+            "\1\u024f",
+            "\1\u0250",
+            "\1\u0251",
+            "\1\u0252",
+            "\1\u0253",
+            "",
+            "\1\u0254",
+            "\1\u0255",
+            "\1\u0256",
+            "\1\u0257",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0259",
+            "",
+            "\1\u025a",
+            "\1\u025b",
+            "\1\u025c",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u025f",
+            "\1\u0260",
+            "\1\u0261",
+            "\1\u0262",
+            "\1\u0263",
+            "\1\u0264",
+            "\1\u0265",
+            "\1\u0266",
+            "\1\u0267",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0269",
+            "\1\u026a",
+            "\1\u026b",
+            "\1\u026c",
+            "\1\u026d",
+            "",
+            "\1\u026e",
+            "\1\u026f",
+            "\1\u0270",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u0272",
+            "\1\u0273",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0275",
+            "\1\u0276",
+            "\1\u0277",
+            "\1\u0278",
+            "\1\u0279",
+            "\1\u027a",
+            "",
+            "\1\u027b",
+            "\1\u027c",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u027e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0280",
+            "\1\u0281",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0284",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0286",
+            "\1\u0287",
+            "\1\u0288",
+            "\1\u0289",
+            "\1\u028a",
+            "\1\u028b",
+            "\1\u028c",
+            "",
+            "\1\u028d",
+            "",
+            "\1\u028e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u0290",
+            "",
+            "\1\u0291",
+            "\1\u0292",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0294",
+            "\1\u0295",
+            "\1\u0296",
+            "\1\u0297",
+            "\1\u0298",
+            "\1\u0299",
+            "",
+            "\1\u029a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u029c",
+            "",
+            "\1\u029d",
+            "\1\u029e",
+            "\1\u029f",
+            "\1\u02a0",
+            "\1\u02a1",
+            "\1\u02a2",
+            "\1\u02a3",
+            "",
+            "\1\u02a4",
+            "\1\u02a5",
+            "\1\u02a6",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02a9",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02ab",
+            "\1\u02ac",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u02af",
+            "",
+            "\1\u02b0",
+            "\1\u02b1",
+            "",
+            "",
+            "\1\u02b2",
+            "\1\u02b3",
+            "\1\u02b4",
+            "\1\u02b5",
+            "\1\u02b6",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02b9",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            ""
+    };
+
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
+
+    static {
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
+        }
+    }
+
+    class DFA21 extends DFA {
+
+        public DFA21(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_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 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | 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 LA21_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA21_0=='=') ) {s = 1;}
+
+                        else if ( (LA21_0=='|') ) {s = 2;}
+
+                        else if ( (LA21_0=='&') ) {s = 3;}
+
+                        else if ( (LA21_0=='D') ) {s = 4;}
+
+                        else if ( (LA21_0=='S') ) {s = 5;}
+
+                        else if ( (LA21_0=='+') ) {s = 6;}
+
+                        else if ( (LA21_0=='-') ) {s = 7;}
+
+                        else if ( (LA21_0=='*') ) {s = 8;}
+
+                        else if ( (LA21_0=='/') ) {s = 9;}
+
+                        else if ( (LA21_0=='%') ) {s = 10;}
+
+                        else if ( (LA21_0=='!') ) {s = 11;}
+
+                        else if ( (LA21_0=='>') ) {s = 12;}
+
+                        else if ( (LA21_0=='<') ) {s = 13;}
+
+                        else if ( (LA21_0=='.') ) {s = 14;}
+
+                        else if ( (LA21_0=='?') ) {s = 15;}
+
+                        else if ( (LA21_0=='v') ) {s = 16;}
+
+                        else if ( (LA21_0=='e') ) {s = 17;}
+
+                        else if ( (LA21_0=='s') ) {s = 18;}
+
+                        else if ( (LA21_0=='i') ) {s = 19;}
+
+                        else if ( (LA21_0=='f') ) {s = 20;}
+
+                        else if ( (LA21_0=='C') ) {s = 21;}
+
+                        else if ( (LA21_0=='R') ) {s = 22;}
+
+                        else if ( (LA21_0=='F') ) {s = 23;}
+
+                        else if ( (LA21_0=='A') ) {s = 24;}
+
+                        else if ( (LA21_0=='E') ) {s = 25;}
+
+                        else if ( (LA21_0=='N') ) {s = 26;}
+
+                        else if ( (LA21_0=='P') ) {s = 27;}
+
+                        else if ( (LA21_0=='I') ) {s = 28;}
+
+                        else if ( (LA21_0=='p') ) {s = 29;}
+
+                        else if ( (LA21_0=='{') ) {s = 30;}
+
+                        else if ( (LA21_0=='}') ) {s = 31;}
+
+                        else if ( (LA21_0=='c') ) {s = 32;}
+
+                        else if ( (LA21_0=='t') ) {s = 33;}
+
+                        else if ( (LA21_0=='d') ) {s = 34;}
+
+                        else if ( (LA21_0=='r') ) {s = 35;}
+
+                        else if ( (LA21_0=='w') ) {s = 36;}
+
+                        else if ( (LA21_0=='u') ) {s = 37;}
+
+                        else if ( (LA21_0=='g') ) {s = 38;}
+
+                        else if ( (LA21_0=='o') ) {s = 39;}
+
+                        else if ( (LA21_0==';') ) {s = 40;}
+
+                        else if ( (LA21_0=='@') ) {s = 41;}
+
+                        else if ( (LA21_0=='(') ) {s = 42;}
+
+                        else if ( (LA21_0==')') ) {s = 43;}
+
+                        else if ( (LA21_0==',') ) {s = 44;}
+
+                        else if ( (LA21_0==']') ) {s = 45;}
+
+                        else if ( (LA21_0=='#') ) {s = 46;}
+
+                        else if ( (LA21_0=='[') ) {s = 47;}
+
+                        else if ( (LA21_0=='a') ) {s = 48;}
+
+                        else if ( (LA21_0==':') ) {s = 49;}
+
+                        else if ( (LA21_0=='n') ) {s = 50;}
+
+                        else if ( (LA21_0=='k') ) {s = 51;}
+
+                        else if ( (LA21_0=='m') ) {s = 52;}
+
+                        else if ( (LA21_0=='0') ) {s = 53;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 54;}
+
+                        else if ( (LA21_0=='^') ) {s = 55;}
+
+                        else if ( (LA21_0=='$'||LA21_0=='B'||(LA21_0>='G' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='M')||LA21_0=='O'||LA21_0=='Q'||(LA21_0>='T' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='h'||LA21_0=='j'||LA21_0=='l'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 56;}
+
+                        else if ( (LA21_0=='\"') ) {s = 57;}
+
+                        else if ( (LA21_0=='\'') ) {s = 58;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 59;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 60;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSLParser.java b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSLParser.java
new file mode 100644
index 0000000..85536cd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src-gen/org/eclipse/osbp/xtext/action/ide/contentassist/antlr/internal/InternalActionDSLParser.java
@@ -0,0 +1,77181 @@
+package org.eclipse.osbp.xtext.action.ide.contentassist.antlr.internal;
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.osbp.xtext.action.services.ActionDSLGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+@SuppressWarnings("all")
+public class InternalActionDSLParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'Download'", "'Start'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'Claim'", "'Stop'", "'Release'", "'Suspend'", "'Resume'", "'Skip'", "'Complete'", "'Delegate'", "'Forward'", "'Fail'", "'Register'", "'Remove'", "'Activate'", "'Exit'", "'RemoveAll'", "'AddAll'", "'New'", "'Save'", "'Delete'", "'Cancel'", "'PrintOnServer'", "'Import'", "'Export'", "'NextPart'", "'PreviousPart'", "'package'", "'{'", "'}'", "'command'", "'toolbar'", "'items'", "'item'", "'icon'", "'taskAction'", "'selectWorkloadAction'", "'dialogAction'", "'reportAction'", "'chartAction'", "'workflowAction'", "'datainterchangeAction'", "'userinterfaceAction'", "'functionalAction'", "'group'", "'canExecute'", "'onFailMessage'", "'onStartedMessage'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'describedBy'", "'keyBinding'", "'executeImmediate'", "'messageCategory'", "'onSuccessMessage'", "'executeLater'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+    };
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__140=140;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=4;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    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
+
+
+        public InternalActionDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalActionDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalActionDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "InternalActionDSL.g"; }
+
+
+    	private ActionDSLGrammarAccess grammarAccess;
+
+    	public void setGrammarAccess(ActionDSLGrammarAccess grammarAccess) {
+    		this.grammarAccess = grammarAccess;
+    	}
+
+    	@Override
+    	protected Grammar getGrammar() {
+    		return grammarAccess.getGrammar();
+    	}
+
+    	@Override
+    	protected String getValueForTokenName(String tokenName) {
+    		return tokenName;
+    	}
+
+
+
+    // $ANTLR start "entryRuleActionModel"
+    // InternalActionDSL.g:67:1: entryRuleActionModel : ruleActionModel EOF ;
+    public final void entryRuleActionModel() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:68:1: ( ruleActionModel EOF )
+            // InternalActionDSL.g:69:1: ruleActionModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionModelRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionModel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionModelRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionModel"
+
+
+    // $ANTLR start "ruleActionModel"
+    // InternalActionDSL.g:76:1: ruleActionModel : ( ( rule__ActionModel__Group__0 ) ) ;
+    public final void ruleActionModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:80:2: ( ( ( rule__ActionModel__Group__0 ) ) )
+            // InternalActionDSL.g:81:2: ( ( rule__ActionModel__Group__0 ) )
+            {
+            // InternalActionDSL.g:81:2: ( ( rule__ActionModel__Group__0 ) )
+            // InternalActionDSL.g:82:3: ( rule__ActionModel__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionModelAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:83:3: ( rule__ActionModel__Group__0 )
+            // InternalActionDSL.g:83:4: rule__ActionModel__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionModel__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionModelAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionModel"
+
+
+    // $ANTLR start "entryRuleActionPackage"
+    // InternalActionDSL.g:92:1: entryRuleActionPackage : ruleActionPackage EOF ;
+    public final void entryRuleActionPackage() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:93:1: ( ruleActionPackage EOF )
+            // InternalActionDSL.g:94:1: ruleActionPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionPackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionPackage"
+
+
+    // $ANTLR start "ruleActionPackage"
+    // InternalActionDSL.g:101:1: ruleActionPackage : ( ( rule__ActionPackage__Group__0 ) ) ;
+    public final void ruleActionPackage() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:105:2: ( ( ( rule__ActionPackage__Group__0 ) ) )
+            // InternalActionDSL.g:106:2: ( ( rule__ActionPackage__Group__0 ) )
+            {
+            // InternalActionDSL.g:106:2: ( ( rule__ActionPackage__Group__0 ) )
+            // InternalActionDSL.g:107:3: ( rule__ActionPackage__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:108:3: ( rule__ActionPackage__Group__0 )
+            // InternalActionDSL.g:108:4: rule__ActionPackage__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionPackage"
+
+
+    // $ANTLR start "entryRuleActionCommand"
+    // InternalActionDSL.g:117:1: entryRuleActionCommand : ruleActionCommand EOF ;
+    public final void entryRuleActionCommand() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:118:1: ( ruleActionCommand EOF )
+            // InternalActionDSL.g:119:1: ruleActionCommand EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionCommand();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionCommand"
+
+
+    // $ANTLR start "ruleActionCommand"
+    // InternalActionDSL.g:126:1: ruleActionCommand : ( ( rule__ActionCommand__Group__0 ) ) ;
+    public final void ruleActionCommand() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:130:2: ( ( ( rule__ActionCommand__Group__0 ) ) )
+            // InternalActionDSL.g:131:2: ( ( rule__ActionCommand__Group__0 ) )
+            {
+            // InternalActionDSL.g:131:2: ( ( rule__ActionCommand__Group__0 ) )
+            // InternalActionDSL.g:132:3: ( rule__ActionCommand__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:133:3: ( rule__ActionCommand__Group__0 )
+            // InternalActionDSL.g:133:4: rule__ActionCommand__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionCommand"
+
+
+    // $ANTLR start "entryRuleActionToolbar"
+    // InternalActionDSL.g:142:1: entryRuleActionToolbar : ruleActionToolbar EOF ;
+    public final void entryRuleActionToolbar() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:143:1: ( ruleActionToolbar EOF )
+            // InternalActionDSL.g:144:1: ruleActionToolbar EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionToolbar();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionToolbar"
+
+
+    // $ANTLR start "ruleActionToolbar"
+    // InternalActionDSL.g:151:1: ruleActionToolbar : ( ( rule__ActionToolbar__Group__0 ) ) ;
+    public final void ruleActionToolbar() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:155:2: ( ( ( rule__ActionToolbar__Group__0 ) ) )
+            // InternalActionDSL.g:156:2: ( ( rule__ActionToolbar__Group__0 ) )
+            {
+            // InternalActionDSL.g:156:2: ( ( rule__ActionToolbar__Group__0 ) )
+            // InternalActionDSL.g:157:3: ( rule__ActionToolbar__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:158:3: ( rule__ActionToolbar__Group__0 )
+            // InternalActionDSL.g:158:4: rule__ActionToolbar__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionToolbar"
+
+
+    // $ANTLR start "entryRuleActionButton"
+    // InternalActionDSL.g:167:1: entryRuleActionButton : ruleActionButton EOF ;
+    public final void entryRuleActionButton() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:168:1: ( ruleActionButton EOF )
+            // InternalActionDSL.g:169:1: ruleActionButton EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionButton();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionButton"
+
+
+    // $ANTLR start "ruleActionButton"
+    // InternalActionDSL.g:176:1: ruleActionButton : ( ( rule__ActionButton__Group__0 ) ) ;
+    public final void ruleActionButton() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:180:2: ( ( ( rule__ActionButton__Group__0 ) ) )
+            // InternalActionDSL.g:181:2: ( ( rule__ActionButton__Group__0 ) )
+            {
+            // InternalActionDSL.g:181:2: ( ( rule__ActionButton__Group__0 ) )
+            // InternalActionDSL.g:182:3: ( rule__ActionButton__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:183:3: ( rule__ActionButton__Group__0 )
+            // InternalActionDSL.g:183:4: rule__ActionButton__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionButton"
+
+
+    // $ANTLR start "entryRuleActionType"
+    // InternalActionDSL.g:192:1: entryRuleActionType : ruleActionType EOF ;
+    public final void entryRuleActionType() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:193:1: ( ruleActionType EOF )
+            // InternalActionDSL.g:194:1: ruleActionType EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionTypeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionType();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionTypeRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionType"
+
+
+    // $ANTLR start "ruleActionType"
+    // InternalActionDSL.g:201:1: ruleActionType : ( ( rule__ActionType__Alternatives ) ) ;
+    public final void ruleActionType() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:205:2: ( ( ( rule__ActionType__Alternatives ) ) )
+            // InternalActionDSL.g:206:2: ( ( rule__ActionType__Alternatives ) )
+            {
+            // InternalActionDSL.g:206:2: ( ( rule__ActionType__Alternatives ) )
+            // InternalActionDSL.g:207:3: ( rule__ActionType__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionTypeAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:208:3: ( rule__ActionType__Alternatives )
+            // InternalActionDSL.g:208:4: rule__ActionType__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionType__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionTypeAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionType"
+
+
+    // $ANTLR start "entryRuleActionTask"
+    // InternalActionDSL.g:217:1: entryRuleActionTask : ruleActionTask EOF ;
+    public final void entryRuleActionTask() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:218:1: ( ruleActionTask EOF )
+            // InternalActionDSL.g:219:1: ruleActionTask EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionTaskRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionTask();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionTaskRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionTask"
+
+
+    // $ANTLR start "ruleActionTask"
+    // InternalActionDSL.g:226:1: ruleActionTask : ( ( rule__ActionTask__Group__0 ) ) ;
+    public final void ruleActionTask() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:230:2: ( ( ( rule__ActionTask__Group__0 ) ) )
+            // InternalActionDSL.g:231:2: ( ( rule__ActionTask__Group__0 ) )
+            {
+            // InternalActionDSL.g:231:2: ( ( rule__ActionTask__Group__0 ) )
+            // InternalActionDSL.g:232:3: ( rule__ActionTask__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionTaskAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:233:3: ( rule__ActionTask__Group__0 )
+            // InternalActionDSL.g:233:4: rule__ActionTask__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionTask__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionTaskAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionTask"
+
+
+    // $ANTLR start "entryRuleActionSelectWorkload"
+    // InternalActionDSL.g:242:1: entryRuleActionSelectWorkload : ruleActionSelectWorkload EOF ;
+    public final void entryRuleActionSelectWorkload() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:243:1: ( ruleActionSelectWorkload EOF )
+            // InternalActionDSL.g:244:1: ruleActionSelectWorkload EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionSelectWorkloadRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionSelectWorkload();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionSelectWorkloadRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionSelectWorkload"
+
+
+    // $ANTLR start "ruleActionSelectWorkload"
+    // InternalActionDSL.g:251:1: ruleActionSelectWorkload : ( ( rule__ActionSelectWorkload__Group__0 ) ) ;
+    public final void ruleActionSelectWorkload() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:255:2: ( ( ( rule__ActionSelectWorkload__Group__0 ) ) )
+            // InternalActionDSL.g:256:2: ( ( rule__ActionSelectWorkload__Group__0 ) )
+            {
+            // InternalActionDSL.g:256:2: ( ( rule__ActionSelectWorkload__Group__0 ) )
+            // InternalActionDSL.g:257:3: ( rule__ActionSelectWorkload__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionSelectWorkloadAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:258:3: ( rule__ActionSelectWorkload__Group__0 )
+            // InternalActionDSL.g:258:4: rule__ActionSelectWorkload__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionSelectWorkload__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionSelectWorkloadAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionSelectWorkload"
+
+
+    // $ANTLR start "entryRuleActionDialog"
+    // InternalActionDSL.g:267:1: entryRuleActionDialog : ruleActionDialog EOF ;
+    public final void entryRuleActionDialog() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:268:1: ( ruleActionDialog EOF )
+            // InternalActionDSL.g:269:1: ruleActionDialog EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDialogRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionDialog();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDialogRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionDialog"
+
+
+    // $ANTLR start "ruleActionDialog"
+    // InternalActionDSL.g:276:1: ruleActionDialog : ( ( rule__ActionDialog__Group__0 ) ) ;
+    public final void ruleActionDialog() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:280:2: ( ( ( rule__ActionDialog__Group__0 ) ) )
+            // InternalActionDSL.g:281:2: ( ( rule__ActionDialog__Group__0 ) )
+            {
+            // InternalActionDSL.g:281:2: ( ( rule__ActionDialog__Group__0 ) )
+            // InternalActionDSL.g:282:3: ( rule__ActionDialog__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDialogAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:283:3: ( rule__ActionDialog__Group__0 )
+            // InternalActionDSL.g:283:4: rule__ActionDialog__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionDialog__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDialogAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionDialog"
+
+
+    // $ANTLR start "entryRuleActionReport"
+    // InternalActionDSL.g:292:1: entryRuleActionReport : ruleActionReport EOF ;
+    public final void entryRuleActionReport() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:293:1: ( ruleActionReport EOF )
+            // InternalActionDSL.g:294:1: ruleActionReport EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionReportRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionReport();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionReportRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionReport"
+
+
+    // $ANTLR start "ruleActionReport"
+    // InternalActionDSL.g:301:1: ruleActionReport : ( ( rule__ActionReport__Group__0 ) ) ;
+    public final void ruleActionReport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:305:2: ( ( ( rule__ActionReport__Group__0 ) ) )
+            // InternalActionDSL.g:306:2: ( ( rule__ActionReport__Group__0 ) )
+            {
+            // InternalActionDSL.g:306:2: ( ( rule__ActionReport__Group__0 ) )
+            // InternalActionDSL.g:307:3: ( rule__ActionReport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionReportAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:308:3: ( rule__ActionReport__Group__0 )
+            // InternalActionDSL.g:308:4: rule__ActionReport__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionReport__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionReportAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionReport"
+
+
+    // $ANTLR start "entryRuleActionChart"
+    // InternalActionDSL.g:317:1: entryRuleActionChart : ruleActionChart EOF ;
+    public final void entryRuleActionChart() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:318:1: ( ruleActionChart EOF )
+            // InternalActionDSL.g:319:1: ruleActionChart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionChartRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionChart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionChartRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionChart"
+
+
+    // $ANTLR start "ruleActionChart"
+    // InternalActionDSL.g:326:1: ruleActionChart : ( ( rule__ActionChart__Group__0 ) ) ;
+    public final void ruleActionChart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:330:2: ( ( ( rule__ActionChart__Group__0 ) ) )
+            // InternalActionDSL.g:331:2: ( ( rule__ActionChart__Group__0 ) )
+            {
+            // InternalActionDSL.g:331:2: ( ( rule__ActionChart__Group__0 ) )
+            // InternalActionDSL.g:332:3: ( rule__ActionChart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionChartAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:333:3: ( rule__ActionChart__Group__0 )
+            // InternalActionDSL.g:333:4: rule__ActionChart__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionChart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionChartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionChart"
+
+
+    // $ANTLR start "entryRuleActionWorkflow"
+    // InternalActionDSL.g:342:1: entryRuleActionWorkflow : ruleActionWorkflow EOF ;
+    public final void entryRuleActionWorkflow() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:343:1: ( ruleActionWorkflow EOF )
+            // InternalActionDSL.g:344:1: ruleActionWorkflow EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionWorkflowRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionWorkflow();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionWorkflowRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionWorkflow"
+
+
+    // $ANTLR start "ruleActionWorkflow"
+    // InternalActionDSL.g:351:1: ruleActionWorkflow : ( ( rule__ActionWorkflow__Group__0 ) ) ;
+    public final void ruleActionWorkflow() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:355:2: ( ( ( rule__ActionWorkflow__Group__0 ) ) )
+            // InternalActionDSL.g:356:2: ( ( rule__ActionWorkflow__Group__0 ) )
+            {
+            // InternalActionDSL.g:356:2: ( ( rule__ActionWorkflow__Group__0 ) )
+            // InternalActionDSL.g:357:3: ( rule__ActionWorkflow__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionWorkflowAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:358:3: ( rule__ActionWorkflow__Group__0 )
+            // InternalActionDSL.g:358:4: rule__ActionWorkflow__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionWorkflow__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionWorkflowAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionWorkflow"
+
+
+    // $ANTLR start "entryRuleActionDatainterchange"
+    // InternalActionDSL.g:367:1: entryRuleActionDatainterchange : ruleActionDatainterchange EOF ;
+    public final void entryRuleActionDatainterchange() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:368:1: ( ruleActionDatainterchange EOF )
+            // InternalActionDSL.g:369:1: ruleActionDatainterchange EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDatainterchangeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionDatainterchange();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDatainterchangeRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionDatainterchange"
+
+
+    // $ANTLR start "ruleActionDatainterchange"
+    // InternalActionDSL.g:376:1: ruleActionDatainterchange : ( ( rule__ActionDatainterchange__Group__0 ) ) ;
+    public final void ruleActionDatainterchange() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:380:2: ( ( ( rule__ActionDatainterchange__Group__0 ) ) )
+            // InternalActionDSL.g:381:2: ( ( rule__ActionDatainterchange__Group__0 ) )
+            {
+            // InternalActionDSL.g:381:2: ( ( rule__ActionDatainterchange__Group__0 ) )
+            // InternalActionDSL.g:382:3: ( rule__ActionDatainterchange__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDatainterchangeAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:383:3: ( rule__ActionDatainterchange__Group__0 )
+            // InternalActionDSL.g:383:4: rule__ActionDatainterchange__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionDatainterchange__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDatainterchangeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionDatainterchange"
+
+
+    // $ANTLR start "entryRuleActionUI"
+    // InternalActionDSL.g:392:1: entryRuleActionUI : ruleActionUI EOF ;
+    public final void entryRuleActionUI() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:393:1: ( ruleActionUI EOF )
+            // InternalActionDSL.g:394:1: ruleActionUI EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionUIRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionUI();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionUIRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionUI"
+
+
+    // $ANTLR start "ruleActionUI"
+    // InternalActionDSL.g:401:1: ruleActionUI : ( ( rule__ActionUI__Group__0 ) ) ;
+    public final void ruleActionUI() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:405:2: ( ( ( rule__ActionUI__Group__0 ) ) )
+            // InternalActionDSL.g:406:2: ( ( rule__ActionUI__Group__0 ) )
+            {
+            // InternalActionDSL.g:406:2: ( ( rule__ActionUI__Group__0 ) )
+            // InternalActionDSL.g:407:3: ( rule__ActionUI__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionUIAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:408:3: ( rule__ActionUI__Group__0 )
+            // InternalActionDSL.g:408:4: rule__ActionUI__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionUI__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionUIAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionUI"
+
+
+    // $ANTLR start "entryRuleActionFunction"
+    // InternalActionDSL.g:417:1: entryRuleActionFunction : ruleActionFunction EOF ;
+    public final void entryRuleActionFunction() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:418:1: ( ruleActionFunction EOF )
+            // InternalActionDSL.g:419:1: ruleActionFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleActionFunction();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleActionFunction"
+
+
+    // $ANTLR start "ruleActionFunction"
+    // InternalActionDSL.g:426:1: ruleActionFunction : ( ( rule__ActionFunction__Group__0 ) ) ;
+    public final void ruleActionFunction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:430:2: ( ( ( rule__ActionFunction__Group__0 ) ) )
+            // InternalActionDSL.g:431:2: ( ( rule__ActionFunction__Group__0 ) )
+            {
+            // InternalActionDSL.g:431:2: ( ( rule__ActionFunction__Group__0 ) )
+            // InternalActionDSL.g:432:3: ( rule__ActionFunction__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:433:3: ( rule__ActionFunction__Group__0 )
+            // InternalActionDSL.g:433:4: rule__ActionFunction__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleActionFunction"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLEID"
+    // InternalActionDSL.g:442:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    public final void entryRuleTRANSLATABLEID() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:443:1: ( ruleTRANSLATABLEID EOF )
+            // InternalActionDSL.g:444:1: ruleTRANSLATABLEID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLEIDRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLEIDRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLEID"
+
+
+    // $ANTLR start "ruleTRANSLATABLEID"
+    // InternalActionDSL.g:451:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    public final void ruleTRANSLATABLEID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:455:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:456:2: ( RULE_ID )
+            {
+            // InternalActionDSL.g:456:2: ( RULE_ID )
+            // InternalActionDSL.g:457:3: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTRANSLATABLEID"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLESTRING"
+    // InternalActionDSL.g:467:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
+    public final void entryRuleTRANSLATABLESTRING() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:468:1: ( ruleTRANSLATABLESTRING EOF )
+            // InternalActionDSL.g:469:1: ruleTRANSLATABLESTRING EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLESTRINGRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLESTRINGRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "ruleTRANSLATABLESTRING"
+    // InternalActionDSL.g:476:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
+    public final void ruleTRANSLATABLESTRING() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:480:2: ( ( RULE_STRING ) )
+            // InternalActionDSL.g:481:2: ( RULE_STRING )
+            {
+            // InternalActionDSL.g:481:2: ( RULE_STRING )
+            // InternalActionDSL.g:482:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "entryRuleXImportDeclaration"
+    // InternalActionDSL.g:492:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    public final void entryRuleXImportDeclaration() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:493:1: ( ruleXImportDeclaration EOF )
+            // InternalActionDSL.g:494:1: ruleXImportDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXImportDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXImportDeclaration"
+
+
+    // $ANTLR start "ruleXImportDeclaration"
+    // InternalActionDSL.g:501:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    public final void ruleXImportDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:505:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // InternalActionDSL.g:506:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            {
+            // InternalActionDSL.g:506:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalActionDSL.g:507:3: ( rule__XImportDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:508:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalActionDSL.g:508:4: rule__XImportDeclaration__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXImportDeclaration"
+
+
+    // $ANTLR start "entryRuleXAnnotation"
+    // InternalActionDSL.g:517:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    public final void entryRuleXAnnotation() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:518:1: ( ruleXAnnotation EOF )
+            // InternalActionDSL.g:519:1: ruleXAnnotation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXAnnotation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotation"
+
+
+    // $ANTLR start "ruleXAnnotation"
+    // InternalActionDSL.g:526:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    public final void ruleXAnnotation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:530:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // InternalActionDSL.g:531:2: ( ( rule__XAnnotation__Group__0 ) )
+            {
+            // InternalActionDSL.g:531:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalActionDSL.g:532:3: ( rule__XAnnotation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:533:3: ( rule__XAnnotation__Group__0 )
+            // InternalActionDSL.g:533:4: rule__XAnnotation__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotation"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValuePair"
+    // InternalActionDSL.g:542:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:543:1: ( ruleXAnnotationElementValuePair EOF )
+            // InternalActionDSL.g:544:1: ruleXAnnotationElementValuePair EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "ruleXAnnotationElementValuePair"
+    // InternalActionDSL.g:551:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    public final void ruleXAnnotationElementValuePair() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:555:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // InternalActionDSL.g:556:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            {
+            // InternalActionDSL.g:556:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalActionDSL.g:557:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:558:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalActionDSL.g:558:4: rule__XAnnotationElementValuePair__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
+    // InternalActionDSL.g:567:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:568:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalActionDSL.g:569:1: ruleXAnnotationElementValueOrCommaList EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXAnnotationElementValueOrCommaList();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
+    // InternalActionDSL.g:576:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:580:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // InternalActionDSL.g:581:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            {
+            // InternalActionDSL.g:581:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalActionDSL.g:582:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:583:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalActionDSL.g:583:4: rule__XAnnotationElementValueOrCommaList__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValue"
+    // InternalActionDSL.g:592:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    public final void entryRuleXAnnotationElementValue() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:593:1: ( ruleXAnnotationElementValue EOF )
+            // InternalActionDSL.g:594:1: ruleXAnnotationElementValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValue"
+
+
+    // $ANTLR start "ruleXAnnotationElementValue"
+    // InternalActionDSL.g:601:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValue() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:605:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // InternalActionDSL.g:606:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            {
+            // InternalActionDSL.g:606:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalActionDSL.g:607:3: ( rule__XAnnotationElementValue__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:608:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalActionDSL.g:608:4: rule__XAnnotationElementValue__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationElementValue"
+
+
+    // $ANTLR start "entryRuleXAnnotationOrExpression"
+    // InternalActionDSL.g:617:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:618:1: ( ruleXAnnotationOrExpression EOF )
+            // InternalActionDSL.g:619:1: ruleXAnnotationOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationOrExpression"
+
+
+    // $ANTLR start "ruleXAnnotationOrExpression"
+    // InternalActionDSL.g:626:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    public final void ruleXAnnotationOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:630:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // InternalActionDSL.g:631:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            {
+            // InternalActionDSL.g:631:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalActionDSL.g:632:3: ( rule__XAnnotationOrExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:633:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalActionDSL.g:633:4: rule__XAnnotationOrExpression__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationOrExpression__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationOrExpression"
+
+
+    // $ANTLR start "entryRuleXExpression"
+    // InternalActionDSL.g:642:1: entryRuleXExpression : ruleXExpression EOF ;
+    public final void entryRuleXExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:643:1: ( ruleXExpression EOF )
+            // InternalActionDSL.g:644:1: ruleXExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpression"
+
+
+    // $ANTLR start "ruleXExpression"
+    // InternalActionDSL.g:651:1: ruleXExpression : ( ruleXAssignment ) ;
+    public final void ruleXExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:655:2: ( ( ruleXAssignment ) )
+            // InternalActionDSL.g:656:2: ( ruleXAssignment )
+            {
+            // InternalActionDSL.g:656:2: ( ruleXAssignment )
+            // InternalActionDSL.g:657:3: ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXExpression"
+
+
+    // $ANTLR start "entryRuleXAssignment"
+    // InternalActionDSL.g:667:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    public final void entryRuleXAssignment() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:668:1: ( ruleXAssignment EOF )
+            // InternalActionDSL.g:669:1: ruleXAssignment EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAssignment"
+
+
+    // $ANTLR start "ruleXAssignment"
+    // InternalActionDSL.g:676:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    public final void ruleXAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:680:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // InternalActionDSL.g:681:2: ( ( rule__XAssignment__Alternatives ) )
+            {
+            // InternalActionDSL.g:681:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalActionDSL.g:682:3: ( rule__XAssignment__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:683:3: ( rule__XAssignment__Alternatives )
+            // InternalActionDSL.g:683:4: rule__XAssignment__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAssignment"
+
+
+    // $ANTLR start "entryRuleOpSingleAssign"
+    // InternalActionDSL.g:692:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    public final void entryRuleOpSingleAssign() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:693:1: ( ruleOpSingleAssign EOF )
+            // InternalActionDSL.g:694:1: ruleOpSingleAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpSingleAssignRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpSingleAssignRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpSingleAssign"
+
+
+    // $ANTLR start "ruleOpSingleAssign"
+    // InternalActionDSL.g:701:1: ruleOpSingleAssign : ( '=' ) ;
+    public final void ruleOpSingleAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:705:2: ( ( '=' ) )
+            // InternalActionDSL.g:706:2: ( '=' )
+            {
+            // InternalActionDSL.g:706:2: ( '=' )
+            // InternalActionDSL.g:707:3: '='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+            }
+            match(input,13,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpSingleAssign"
+
+
+    // $ANTLR start "entryRuleOpMultiAssign"
+    // InternalActionDSL.g:717:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    public final void entryRuleOpMultiAssign() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:718:1: ( ruleOpMultiAssign EOF )
+            // InternalActionDSL.g:719:1: ruleOpMultiAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpMultiAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpMultiAssign"
+
+
+    // $ANTLR start "ruleOpMultiAssign"
+    // InternalActionDSL.g:726:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    public final void ruleOpMultiAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:730:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // InternalActionDSL.g:731:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            {
+            // InternalActionDSL.g:731:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalActionDSL.g:732:3: ( rule__OpMultiAssign__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:733:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalActionDSL.g:733:4: rule__OpMultiAssign__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpMultiAssign__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpMultiAssign"
+
+
+    // $ANTLR start "entryRuleXOrExpression"
+    // InternalActionDSL.g:742:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    public final void entryRuleXOrExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:743:1: ( ruleXOrExpression EOF )
+            // InternalActionDSL.g:744:1: ruleXOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXOrExpression"
+
+
+    // $ANTLR start "ruleXOrExpression"
+    // InternalActionDSL.g:751:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    public final void ruleXOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:755:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // InternalActionDSL.g:756:2: ( ( rule__XOrExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:756:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalActionDSL.g:757:3: ( rule__XOrExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:758:3: ( rule__XOrExpression__Group__0 )
+            // InternalActionDSL.g:758:4: rule__XOrExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXOrExpression"
+
+
+    // $ANTLR start "entryRuleOpOr"
+    // InternalActionDSL.g:767:1: entryRuleOpOr : ruleOpOr EOF ;
+    public final void entryRuleOpOr() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:768:1: ( ruleOpOr EOF )
+            // InternalActionDSL.g:769:1: ruleOpOr EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOrRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpOr();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOrRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpOr"
+
+
+    // $ANTLR start "ruleOpOr"
+    // InternalActionDSL.g:776:1: ruleOpOr : ( '||' ) ;
+    public final void ruleOpOr() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:780:2: ( ( '||' ) )
+            // InternalActionDSL.g:781:2: ( '||' )
+            {
+            // InternalActionDSL.g:781:2: ( '||' )
+            // InternalActionDSL.g:782:3: '||'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+            }
+            match(input,14,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpOr"
+
+
+    // $ANTLR start "entryRuleXAndExpression"
+    // InternalActionDSL.g:792:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    public final void entryRuleXAndExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:793:1: ( ruleXAndExpression EOF )
+            // InternalActionDSL.g:794:1: ruleXAndExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAndExpression"
+
+
+    // $ANTLR start "ruleXAndExpression"
+    // InternalActionDSL.g:801:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    public final void ruleXAndExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:805:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // InternalActionDSL.g:806:2: ( ( rule__XAndExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:806:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalActionDSL.g:807:3: ( rule__XAndExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:808:3: ( rule__XAndExpression__Group__0 )
+            // InternalActionDSL.g:808:4: rule__XAndExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAndExpression"
+
+
+    // $ANTLR start "entryRuleOpAnd"
+    // InternalActionDSL.g:817:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    public final void entryRuleOpAnd() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:818:1: ( ruleOpAnd EOF )
+            // InternalActionDSL.g:819:1: ruleOpAnd EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAndRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAndRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpAnd"
+
+
+    // $ANTLR start "ruleOpAnd"
+    // InternalActionDSL.g:826:1: ruleOpAnd : ( '&&' ) ;
+    public final void ruleOpAnd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:830:2: ( ( '&&' ) )
+            // InternalActionDSL.g:831:2: ( '&&' )
+            {
+            // InternalActionDSL.g:831:2: ( '&&' )
+            // InternalActionDSL.g:832:3: '&&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+            }
+            match(input,15,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpAnd"
+
+
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // InternalActionDSL.g:842:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    public final void entryRuleXEqualityExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:843:1: ( ruleXEqualityExpression EOF )
+            // InternalActionDSL.g:844:1: ruleXEqualityExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXEqualityExpression"
+
+
+    // $ANTLR start "ruleXEqualityExpression"
+    // InternalActionDSL.g:851:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    public final void ruleXEqualityExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:855:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // InternalActionDSL.g:856:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:856:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalActionDSL.g:857:3: ( rule__XEqualityExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:858:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalActionDSL.g:858:4: rule__XEqualityExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXEqualityExpression"
+
+
+    // $ANTLR start "entryRuleOpEquality"
+    // InternalActionDSL.g:867:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    public final void entryRuleOpEquality() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:868:1: ( ruleOpEquality EOF )
+            // InternalActionDSL.g:869:1: ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpEqualityRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpEquality"
+
+
+    // $ANTLR start "ruleOpEquality"
+    // InternalActionDSL.g:876:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    public final void ruleOpEquality() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:880:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // InternalActionDSL.g:881:2: ( ( rule__OpEquality__Alternatives ) )
+            {
+            // InternalActionDSL.g:881:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalActionDSL.g:882:3: ( rule__OpEquality__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:883:3: ( rule__OpEquality__Alternatives )
+            // InternalActionDSL.g:883:4: rule__OpEquality__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpEquality__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpEquality"
+
+
+    // $ANTLR start "entryRuleXRelationalExpression"
+    // InternalActionDSL.g:892:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    public final void entryRuleXRelationalExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:893:1: ( ruleXRelationalExpression EOF )
+            // InternalActionDSL.g:894:1: ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXRelationalExpression"
+
+
+    // $ANTLR start "ruleXRelationalExpression"
+    // InternalActionDSL.g:901:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    public final void ruleXRelationalExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:905:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // InternalActionDSL.g:906:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:906:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalActionDSL.g:907:3: ( rule__XRelationalExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:908:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalActionDSL.g:908:4: rule__XRelationalExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXRelationalExpression"
+
+
+    // $ANTLR start "entryRuleOpCompare"
+    // InternalActionDSL.g:917:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    public final void entryRuleOpCompare() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:918:1: ( ruleOpCompare EOF )
+            // InternalActionDSL.g:919:1: ruleOpCompare EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpCompare();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpCompareRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpCompare"
+
+
+    // $ANTLR start "ruleOpCompare"
+    // InternalActionDSL.g:926:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    public final void ruleOpCompare() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:930:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // InternalActionDSL.g:931:2: ( ( rule__OpCompare__Alternatives ) )
+            {
+            // InternalActionDSL.g:931:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalActionDSL.g:932:3: ( rule__OpCompare__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:933:3: ( rule__OpCompare__Alternatives )
+            // InternalActionDSL.g:933:4: rule__OpCompare__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpCompare__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpCompare"
+
+
+    // $ANTLR start "entryRuleXOtherOperatorExpression"
+    // InternalActionDSL.g:942:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:943:1: ( ruleXOtherOperatorExpression EOF )
+            // InternalActionDSL.g:944:1: ruleXOtherOperatorExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXOtherOperatorExpression"
+
+
+    // $ANTLR start "ruleXOtherOperatorExpression"
+    // InternalActionDSL.g:951:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    public final void ruleXOtherOperatorExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:955:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // InternalActionDSL.g:956:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:956:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalActionDSL.g:957:3: ( rule__XOtherOperatorExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:958:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalActionDSL.g:958:4: rule__XOtherOperatorExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXOtherOperatorExpression"
+
+
+    // $ANTLR start "entryRuleOpOther"
+    // InternalActionDSL.g:967:1: entryRuleOpOther : ruleOpOther EOF ;
+    public final void entryRuleOpOther() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:968:1: ( ruleOpOther EOF )
+            // InternalActionDSL.g:969:1: ruleOpOther EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpOther();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpOther"
+
+
+    // $ANTLR start "ruleOpOther"
+    // InternalActionDSL.g:976:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    public final void ruleOpOther() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:980:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // InternalActionDSL.g:981:2: ( ( rule__OpOther__Alternatives ) )
+            {
+            // InternalActionDSL.g:981:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalActionDSL.g:982:3: ( rule__OpOther__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:983:3: ( rule__OpOther__Alternatives )
+            // InternalActionDSL.g:983:4: rule__OpOther__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpOther"
+
+
+    // $ANTLR start "entryRuleXAdditiveExpression"
+    // InternalActionDSL.g:992:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    public final void entryRuleXAdditiveExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:993:1: ( ruleXAdditiveExpression EOF )
+            // InternalActionDSL.g:994:1: ruleXAdditiveExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAdditiveExpression"
+
+
+    // $ANTLR start "ruleXAdditiveExpression"
+    // InternalActionDSL.g:1001:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    public final void ruleXAdditiveExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1005:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1006:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1006:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalActionDSL.g:1007:3: ( rule__XAdditiveExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1008:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalActionDSL.g:1008:4: rule__XAdditiveExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAdditiveExpression"
+
+
+    // $ANTLR start "entryRuleOpAdd"
+    // InternalActionDSL.g:1017:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    public final void entryRuleOpAdd() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1018:1: ( ruleOpAdd EOF )
+            // InternalActionDSL.g:1019:1: ruleOpAdd EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpAdd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAddRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpAdd"
+
+
+    // $ANTLR start "ruleOpAdd"
+    // InternalActionDSL.g:1026:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    public final void ruleOpAdd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1030:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // InternalActionDSL.g:1031:2: ( ( rule__OpAdd__Alternatives ) )
+            {
+            // InternalActionDSL.g:1031:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalActionDSL.g:1032:3: ( rule__OpAdd__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1033:3: ( rule__OpAdd__Alternatives )
+            // InternalActionDSL.g:1033:4: rule__OpAdd__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpAdd__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpAdd"
+
+
+    // $ANTLR start "entryRuleXMultiplicativeExpression"
+    // InternalActionDSL.g:1042:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1043:1: ( ruleXMultiplicativeExpression EOF )
+            // InternalActionDSL.g:1044:1: ruleXMultiplicativeExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXMultiplicativeExpression"
+
+
+    // $ANTLR start "ruleXMultiplicativeExpression"
+    // InternalActionDSL.g:1051:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    public final void ruleXMultiplicativeExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1055:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1056:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1056:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalActionDSL.g:1057:3: ( rule__XMultiplicativeExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1058:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalActionDSL.g:1058:4: rule__XMultiplicativeExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXMultiplicativeExpression"
+
+
+    // $ANTLR start "entryRuleOpMulti"
+    // InternalActionDSL.g:1067:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    public final void entryRuleOpMulti() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1068:1: ( ruleOpMulti EOF )
+            // InternalActionDSL.g:1069:1: ruleOpMulti EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpMulti();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpMulti"
+
+
+    // $ANTLR start "ruleOpMulti"
+    // InternalActionDSL.g:1076:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    public final void ruleOpMulti() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1080:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // InternalActionDSL.g:1081:2: ( ( rule__OpMulti__Alternatives ) )
+            {
+            // InternalActionDSL.g:1081:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalActionDSL.g:1082:3: ( rule__OpMulti__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1083:3: ( rule__OpMulti__Alternatives )
+            // InternalActionDSL.g:1083:4: rule__OpMulti__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpMulti__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpMulti"
+
+
+    // $ANTLR start "entryRuleXUnaryOperation"
+    // InternalActionDSL.g:1092:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    public final void entryRuleXUnaryOperation() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1093:1: ( ruleXUnaryOperation EOF )
+            // InternalActionDSL.g:1094:1: ruleXUnaryOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXUnaryOperation"
+
+
+    // $ANTLR start "ruleXUnaryOperation"
+    // InternalActionDSL.g:1101:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    public final void ruleXUnaryOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1105:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // InternalActionDSL.g:1106:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            {
+            // InternalActionDSL.g:1106:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalActionDSL.g:1107:3: ( rule__XUnaryOperation__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1108:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalActionDSL.g:1108:4: rule__XUnaryOperation__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__XUnaryOperation__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXUnaryOperation"
+
+
+    // $ANTLR start "entryRuleOpUnary"
+    // InternalActionDSL.g:1117:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    public final void entryRuleOpUnary() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1118:1: ( ruleOpUnary EOF )
+            // InternalActionDSL.g:1119:1: ruleOpUnary EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpUnary();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpUnaryRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpUnary"
+
+
+    // $ANTLR start "ruleOpUnary"
+    // InternalActionDSL.g:1126:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    public final void ruleOpUnary() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1130:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // InternalActionDSL.g:1131:2: ( ( rule__OpUnary__Alternatives ) )
+            {
+            // InternalActionDSL.g:1131:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalActionDSL.g:1132:3: ( rule__OpUnary__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1133:3: ( rule__OpUnary__Alternatives )
+            // InternalActionDSL.g:1133:4: rule__OpUnary__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpUnary__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpUnary"
+
+
+    // $ANTLR start "entryRuleXCastedExpression"
+    // InternalActionDSL.g:1142:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    public final void entryRuleXCastedExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1143:1: ( ruleXCastedExpression EOF )
+            // InternalActionDSL.g:1144:1: ruleXCastedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXCastedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCastedExpression"
+
+
+    // $ANTLR start "ruleXCastedExpression"
+    // InternalActionDSL.g:1151:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    public final void ruleXCastedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1155:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1156:2: ( ( rule__XCastedExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1156:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalActionDSL.g:1157:3: ( rule__XCastedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1158:3: ( rule__XCastedExpression__Group__0 )
+            // InternalActionDSL.g:1158:4: rule__XCastedExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCastedExpression"
+
+
+    // $ANTLR start "entryRuleXPostfixOperation"
+    // InternalActionDSL.g:1167:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    public final void entryRuleXPostfixOperation() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1168:1: ( ruleXPostfixOperation EOF )
+            // InternalActionDSL.g:1169:1: ruleXPostfixOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXPostfixOperation"
+
+
+    // $ANTLR start "ruleXPostfixOperation"
+    // InternalActionDSL.g:1176:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    public final void ruleXPostfixOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1180:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // InternalActionDSL.g:1181:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            {
+            // InternalActionDSL.g:1181:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalActionDSL.g:1182:3: ( rule__XPostfixOperation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1183:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalActionDSL.g:1183:4: rule__XPostfixOperation__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XPostfixOperation__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXPostfixOperation"
+
+
+    // $ANTLR start "entryRuleOpPostfix"
+    // InternalActionDSL.g:1192:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    public final void entryRuleOpPostfix() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1193:1: ( ruleOpPostfix EOF )
+            // InternalActionDSL.g:1194:1: ruleOpPostfix EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleOpPostfix();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpPostfixRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpPostfix"
+
+
+    // $ANTLR start "ruleOpPostfix"
+    // InternalActionDSL.g:1201:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    public final void ruleOpPostfix() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1205:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // InternalActionDSL.g:1206:2: ( ( rule__OpPostfix__Alternatives ) )
+            {
+            // InternalActionDSL.g:1206:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalActionDSL.g:1207:3: ( rule__OpPostfix__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1208:3: ( rule__OpPostfix__Alternatives )
+            // InternalActionDSL.g:1208:4: rule__OpPostfix__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpPostfix__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpPostfix"
+
+
+    // $ANTLR start "entryRuleXMemberFeatureCall"
+    // InternalActionDSL.g:1217:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    public final void entryRuleXMemberFeatureCall() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1218:1: ( ruleXMemberFeatureCall EOF )
+            // InternalActionDSL.g:1219:1: ruleXMemberFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXMemberFeatureCall"
+
+
+    // $ANTLR start "ruleXMemberFeatureCall"
+    // InternalActionDSL.g:1226:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    public final void ruleXMemberFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1230:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // InternalActionDSL.g:1231:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            {
+            // InternalActionDSL.g:1231:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalActionDSL.g:1232:3: ( rule__XMemberFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1233:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalActionDSL.g:1233:4: rule__XMemberFeatureCall__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXMemberFeatureCall"
+
+
+    // $ANTLR start "entryRuleXPrimaryExpression"
+    // InternalActionDSL.g:1242:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    public final void entryRuleXPrimaryExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1243:1: ( ruleXPrimaryExpression EOF )
+            // InternalActionDSL.g:1244:1: ruleXPrimaryExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXPrimaryExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPrimaryExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXPrimaryExpression"
+
+
+    // $ANTLR start "ruleXPrimaryExpression"
+    // InternalActionDSL.g:1251:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    public final void ruleXPrimaryExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1255:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // InternalActionDSL.g:1256:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            {
+            // InternalActionDSL.g:1256:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalActionDSL.g:1257:3: ( rule__XPrimaryExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1258:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalActionDSL.g:1258:4: rule__XPrimaryExpression__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__XPrimaryExpression__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXPrimaryExpression"
+
+
+    // $ANTLR start "entryRuleXLiteral"
+    // InternalActionDSL.g:1267:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    public final void entryRuleXLiteral() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1268:1: ( ruleXLiteral EOF )
+            // InternalActionDSL.g:1269:1: ruleXLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXLiteral"
+
+
+    // $ANTLR start "ruleXLiteral"
+    // InternalActionDSL.g:1276:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    public final void ruleXLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1280:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // InternalActionDSL.g:1281:2: ( ( rule__XLiteral__Alternatives ) )
+            {
+            // InternalActionDSL.g:1281:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalActionDSL.g:1282:3: ( rule__XLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1283:3: ( rule__XLiteral__Alternatives )
+            // InternalActionDSL.g:1283:4: rule__XLiteral__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__XLiteral__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXLiteral"
+
+
+    // $ANTLR start "entryRuleXCollectionLiteral"
+    // InternalActionDSL.g:1292:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    public final void entryRuleXCollectionLiteral() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1293:1: ( ruleXCollectionLiteral EOF )
+            // InternalActionDSL.g:1294:1: ruleXCollectionLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXCollectionLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCollectionLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCollectionLiteral"
+
+
+    // $ANTLR start "ruleXCollectionLiteral"
+    // InternalActionDSL.g:1301:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    public final void ruleXCollectionLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1305:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // InternalActionDSL.g:1306:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            {
+            // InternalActionDSL.g:1306:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalActionDSL.g:1307:3: ( rule__XCollectionLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1308:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalActionDSL.g:1308:4: rule__XCollectionLiteral__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCollectionLiteral__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCollectionLiteral"
+
+
+    // $ANTLR start "entryRuleXSetLiteral"
+    // InternalActionDSL.g:1317:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    public final void entryRuleXSetLiteral() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1318:1: ( ruleXSetLiteral EOF )
+            // InternalActionDSL.g:1319:1: ruleXSetLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXSetLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSetLiteral"
+
+
+    // $ANTLR start "ruleXSetLiteral"
+    // InternalActionDSL.g:1326:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    public final void ruleXSetLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1330:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // InternalActionDSL.g:1331:2: ( ( rule__XSetLiteral__Group__0 ) )
+            {
+            // InternalActionDSL.g:1331:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalActionDSL.g:1332:3: ( rule__XSetLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1333:3: ( rule__XSetLiteral__Group__0 )
+            // InternalActionDSL.g:1333:4: rule__XSetLiteral__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXSetLiteral"
+
+
+    // $ANTLR start "entryRuleXListLiteral"
+    // InternalActionDSL.g:1342:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    public final void entryRuleXListLiteral() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1343:1: ( ruleXListLiteral EOF )
+            // InternalActionDSL.g:1344:1: ruleXListLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXListLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXListLiteral"
+
+
+    // $ANTLR start "ruleXListLiteral"
+    // InternalActionDSL.g:1351:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    public final void ruleXListLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1355:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // InternalActionDSL.g:1356:2: ( ( rule__XListLiteral__Group__0 ) )
+            {
+            // InternalActionDSL.g:1356:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalActionDSL.g:1357:3: ( rule__XListLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1358:3: ( rule__XListLiteral__Group__0 )
+            // InternalActionDSL.g:1358:4: rule__XListLiteral__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXListLiteral"
+
+
+    // $ANTLR start "entryRuleXClosure"
+    // InternalActionDSL.g:1367:1: entryRuleXClosure : ruleXClosure EOF ;
+    public final void entryRuleXClosure() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1368:1: ( ruleXClosure EOF )
+            // InternalActionDSL.g:1369:1: ruleXClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXClosure"
+
+
+    // $ANTLR start "ruleXClosure"
+    // InternalActionDSL.g:1376:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    public final void ruleXClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1380:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // InternalActionDSL.g:1381:2: ( ( rule__XClosure__Group__0 ) )
+            {
+            // InternalActionDSL.g:1381:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalActionDSL.g:1382:3: ( rule__XClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1383:3: ( rule__XClosure__Group__0 )
+            // InternalActionDSL.g:1383:4: rule__XClosure__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXClosure"
+
+
+    // $ANTLR start "entryRuleXExpressionInClosure"
+    // InternalActionDSL.g:1392:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    public final void entryRuleXExpressionInClosure() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1393:1: ( ruleXExpressionInClosure EOF )
+            // InternalActionDSL.g:1394:1: ruleXExpressionInClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXExpressionInClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpressionInClosure"
+
+
+    // $ANTLR start "ruleXExpressionInClosure"
+    // InternalActionDSL.g:1401:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    public final void ruleXExpressionInClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1405:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // InternalActionDSL.g:1406:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            {
+            // InternalActionDSL.g:1406:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalActionDSL.g:1407:3: ( rule__XExpressionInClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1408:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalActionDSL.g:1408:4: rule__XExpressionInClosure__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XExpressionInClosure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXExpressionInClosure"
+
+
+    // $ANTLR start "entryRuleXShortClosure"
+    // InternalActionDSL.g:1417:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    public final void entryRuleXShortClosure() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1418:1: ( ruleXShortClosure EOF )
+            // InternalActionDSL.g:1419:1: ruleXShortClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXShortClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXShortClosure"
+
+
+    // $ANTLR start "ruleXShortClosure"
+    // InternalActionDSL.g:1426:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    public final void ruleXShortClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1430:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // InternalActionDSL.g:1431:2: ( ( rule__XShortClosure__Group__0 ) )
+            {
+            // InternalActionDSL.g:1431:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalActionDSL.g:1432:3: ( rule__XShortClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1433:3: ( rule__XShortClosure__Group__0 )
+            // InternalActionDSL.g:1433:4: rule__XShortClosure__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXShortClosure"
+
+
+    // $ANTLR start "entryRuleXParenthesizedExpression"
+    // InternalActionDSL.g:1442:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    public final void entryRuleXParenthesizedExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1443:1: ( ruleXParenthesizedExpression EOF )
+            // InternalActionDSL.g:1444:1: ruleXParenthesizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXParenthesizedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXParenthesizedExpression"
+
+
+    // $ANTLR start "ruleXParenthesizedExpression"
+    // InternalActionDSL.g:1451:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    public final void ruleXParenthesizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1455:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1456:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1456:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalActionDSL.g:1457:3: ( rule__XParenthesizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1458:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalActionDSL.g:1458:4: rule__XParenthesizedExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XParenthesizedExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXParenthesizedExpression"
+
+
+    // $ANTLR start "entryRuleXIfExpression"
+    // InternalActionDSL.g:1467:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    public final void entryRuleXIfExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1468:1: ( ruleXIfExpression EOF )
+            // InternalActionDSL.g:1469:1: ruleXIfExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXIfExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXIfExpression"
+
+
+    // $ANTLR start "ruleXIfExpression"
+    // InternalActionDSL.g:1476:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    public final void ruleXIfExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1480:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1481:2: ( ( rule__XIfExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1481:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalActionDSL.g:1482:3: ( rule__XIfExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1483:3: ( rule__XIfExpression__Group__0 )
+            // InternalActionDSL.g:1483:4: rule__XIfExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXIfExpression"
+
+
+    // $ANTLR start "entryRuleXSwitchExpression"
+    // InternalActionDSL.g:1492:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    public final void entryRuleXSwitchExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1493:1: ( ruleXSwitchExpression EOF )
+            // InternalActionDSL.g:1494:1: ruleXSwitchExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXSwitchExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSwitchExpression"
+
+
+    // $ANTLR start "ruleXSwitchExpression"
+    // InternalActionDSL.g:1501:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    public final void ruleXSwitchExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1505:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1506:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1506:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalActionDSL.g:1507:3: ( rule__XSwitchExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1508:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalActionDSL.g:1508:4: rule__XSwitchExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXSwitchExpression"
+
+
+    // $ANTLR start "entryRuleXCasePart"
+    // InternalActionDSL.g:1517:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    public final void entryRuleXCasePart() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1518:1: ( ruleXCasePart EOF )
+            // InternalActionDSL.g:1519:1: ruleXCasePart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXCasePart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCasePart"
+
+
+    // $ANTLR start "ruleXCasePart"
+    // InternalActionDSL.g:1526:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    public final void ruleXCasePart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1530:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // InternalActionDSL.g:1531:2: ( ( rule__XCasePart__Group__0 ) )
+            {
+            // InternalActionDSL.g:1531:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalActionDSL.g:1532:3: ( rule__XCasePart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1533:3: ( rule__XCasePart__Group__0 )
+            // InternalActionDSL.g:1533:4: rule__XCasePart__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCasePart"
+
+
+    // $ANTLR start "entryRuleXForLoopExpression"
+    // InternalActionDSL.g:1542:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    public final void entryRuleXForLoopExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1543:1: ( ruleXForLoopExpression EOF )
+            // InternalActionDSL.g:1544:1: ruleXForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXForLoopExpression"
+
+
+    // $ANTLR start "ruleXForLoopExpression"
+    // InternalActionDSL.g:1551:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    public final void ruleXForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1555:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1556:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1556:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalActionDSL.g:1557:3: ( rule__XForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1558:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalActionDSL.g:1558:4: rule__XForLoopExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXForLoopExpression"
+
+
+    // $ANTLR start "entryRuleXBasicForLoopExpression"
+    // InternalActionDSL.g:1567:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1568:1: ( ruleXBasicForLoopExpression EOF )
+            // InternalActionDSL.g:1569:1: ruleXBasicForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXBasicForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBasicForLoopExpression"
+
+
+    // $ANTLR start "ruleXBasicForLoopExpression"
+    // InternalActionDSL.g:1576:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    public final void ruleXBasicForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1580:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1581:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1581:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalActionDSL.g:1582:3: ( rule__XBasicForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1583:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalActionDSL.g:1583:4: rule__XBasicForLoopExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXBasicForLoopExpression"
+
+
+    // $ANTLR start "entryRuleXWhileExpression"
+    // InternalActionDSL.g:1592:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    public final void entryRuleXWhileExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1593:1: ( ruleXWhileExpression EOF )
+            // InternalActionDSL.g:1594:1: ruleXWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXWhileExpression"
+
+
+    // $ANTLR start "ruleXWhileExpression"
+    // InternalActionDSL.g:1601:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    public final void ruleXWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1605:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1606:2: ( ( rule__XWhileExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1606:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalActionDSL.g:1607:3: ( rule__XWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1608:3: ( rule__XWhileExpression__Group__0 )
+            // InternalActionDSL.g:1608:4: rule__XWhileExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XWhileExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXWhileExpression"
+
+
+    // $ANTLR start "entryRuleXDoWhileExpression"
+    // InternalActionDSL.g:1617:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    public final void entryRuleXDoWhileExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1618:1: ( ruleXDoWhileExpression EOF )
+            // InternalActionDSL.g:1619:1: ruleXDoWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXDoWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXDoWhileExpression"
+
+
+    // $ANTLR start "ruleXDoWhileExpression"
+    // InternalActionDSL.g:1626:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    public final void ruleXDoWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1630:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1631:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1631:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalActionDSL.g:1632:3: ( rule__XDoWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1633:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalActionDSL.g:1633:4: rule__XDoWhileExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXDoWhileExpression"
+
+
+    // $ANTLR start "entryRuleXBlockExpression"
+    // InternalActionDSL.g:1642:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    public final void entryRuleXBlockExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1643:1: ( ruleXBlockExpression EOF )
+            // InternalActionDSL.g:1644:1: ruleXBlockExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBlockExpression"
+
+
+    // $ANTLR start "ruleXBlockExpression"
+    // InternalActionDSL.g:1651:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    public final void ruleXBlockExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1655:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // InternalActionDSL.g:1656:2: ( ( rule__XBlockExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:1656:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalActionDSL.g:1657:3: ( rule__XBlockExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1658:3: ( rule__XBlockExpression__Group__0 )
+            // InternalActionDSL.g:1658:4: rule__XBlockExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBlockExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXBlockExpression"
+
+
+    // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
+    // InternalActionDSL.g:1667:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1668:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // InternalActionDSL.g:1669:1: ruleXExpressionOrVarDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXExpressionOrVarDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionOrVarDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpressionOrVarDeclaration"
+
+
+    // $ANTLR start "ruleXExpressionOrVarDeclaration"
+    // InternalActionDSL.g:1676:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1680:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // InternalActionDSL.g:1681:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            {
+            // InternalActionDSL.g:1681:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalActionDSL.g:1682:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1683:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalActionDSL.g:1683:4: rule__XExpressionOrVarDeclaration__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__XExpressionOrVarDeclaration__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXExpressionOrVarDeclaration"
+
+
+    // $ANTLR start "entryRuleXVariableDeclaration"
+    // InternalActionDSL.g:1692:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    public final void entryRuleXVariableDeclaration() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1693:1: ( ruleXVariableDeclaration EOF )
+            // InternalActionDSL.g:1694:1: ruleXVariableDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXVariableDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXVariableDeclaration"
+
+
+    // $ANTLR start "ruleXVariableDeclaration"
+    // InternalActionDSL.g:1701:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    public final void ruleXVariableDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1705:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // InternalActionDSL.g:1706:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            {
+            // InternalActionDSL.g:1706:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalActionDSL.g:1707:3: ( rule__XVariableDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1708:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalActionDSL.g:1708:4: rule__XVariableDeclaration__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXVariableDeclaration"
+
+
+    // $ANTLR start "entryRuleJvmFormalParameter"
+    // InternalActionDSL.g:1717:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    public final void entryRuleJvmFormalParameter() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1718:1: ( ruleJvmFormalParameter EOF )
+            // InternalActionDSL.g:1719:1: ruleJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmFormalParameter"
+
+
+    // $ANTLR start "ruleJvmFormalParameter"
+    // InternalActionDSL.g:1726:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    public final void ruleJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1730:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // InternalActionDSL.g:1731:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            {
+            // InternalActionDSL.g:1731:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalActionDSL.g:1732:3: ( rule__JvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1733:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalActionDSL.g:1733:4: rule__JvmFormalParameter__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmFormalParameter__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmFormalParameter"
+
+
+    // $ANTLR start "entryRuleFullJvmFormalParameter"
+    // InternalActionDSL.g:1742:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1743:1: ( ruleFullJvmFormalParameter EOF )
+            // InternalActionDSL.g:1744:1: ruleFullJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleFullJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFullJvmFormalParameter"
+
+
+    // $ANTLR start "ruleFullJvmFormalParameter"
+    // InternalActionDSL.g:1751:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    public final void ruleFullJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1755:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // InternalActionDSL.g:1756:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            {
+            // InternalActionDSL.g:1756:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalActionDSL.g:1757:3: ( rule__FullJvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1758:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalActionDSL.g:1758:4: rule__FullJvmFormalParameter__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__FullJvmFormalParameter__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFullJvmFormalParameter"
+
+
+    // $ANTLR start "entryRuleXFeatureCall"
+    // InternalActionDSL.g:1767:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    public final void entryRuleXFeatureCall() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1768:1: ( ruleXFeatureCall EOF )
+            // InternalActionDSL.g:1769:1: ruleXFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXFeatureCall"
+
+
+    // $ANTLR start "ruleXFeatureCall"
+    // InternalActionDSL.g:1776:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    public final void ruleXFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1780:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // InternalActionDSL.g:1781:2: ( ( rule__XFeatureCall__Group__0 ) )
+            {
+            // InternalActionDSL.g:1781:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalActionDSL.g:1782:3: ( rule__XFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1783:3: ( rule__XFeatureCall__Group__0 )
+            // InternalActionDSL.g:1783:4: rule__XFeatureCall__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXFeatureCall"
+
+
+    // $ANTLR start "entryRuleFeatureCallID"
+    // InternalActionDSL.g:1792:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    public final void entryRuleFeatureCallID() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1793:1: ( ruleFeatureCallID EOF )
+            // InternalActionDSL.g:1794:1: ruleFeatureCallID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleFeatureCallID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFeatureCallIDRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFeatureCallID"
+
+
+    // $ANTLR start "ruleFeatureCallID"
+    // InternalActionDSL.g:1801:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    public final void ruleFeatureCallID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1805:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // InternalActionDSL.g:1806:2: ( ( rule__FeatureCallID__Alternatives ) )
+            {
+            // InternalActionDSL.g:1806:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalActionDSL.g:1807:3: ( rule__FeatureCallID__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1808:3: ( rule__FeatureCallID__Alternatives )
+            // InternalActionDSL.g:1808:4: rule__FeatureCallID__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__FeatureCallID__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFeatureCallID"
+
+
+    // $ANTLR start "entryRuleIdOrSuper"
+    // InternalActionDSL.g:1817:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    public final void entryRuleIdOrSuper() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1818:1: ( ruleIdOrSuper EOF )
+            // InternalActionDSL.g:1819:1: ruleIdOrSuper EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIdOrSuperRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleIdOrSuper"
+
+
+    // $ANTLR start "ruleIdOrSuper"
+    // InternalActionDSL.g:1826:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    public final void ruleIdOrSuper() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1830:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // InternalActionDSL.g:1831:2: ( ( rule__IdOrSuper__Alternatives ) )
+            {
+            // InternalActionDSL.g:1831:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalActionDSL.g:1832:3: ( rule__IdOrSuper__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:1833:3: ( rule__IdOrSuper__Alternatives )
+            // InternalActionDSL.g:1833:4: rule__IdOrSuper__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__IdOrSuper__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleIdOrSuper"
+
+
+    // $ANTLR start "entryRuleXConstructorCall"
+    // InternalActionDSL.g:1842:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    public final void entryRuleXConstructorCall() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1843:1: ( ruleXConstructorCall EOF )
+            // InternalActionDSL.g:1844:1: ruleXConstructorCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXConstructorCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXConstructorCall"
+
+
+    // $ANTLR start "ruleXConstructorCall"
+    // InternalActionDSL.g:1851:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    public final void ruleXConstructorCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1855:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // InternalActionDSL.g:1856:2: ( ( rule__XConstructorCall__Group__0 ) )
+            {
+            // InternalActionDSL.g:1856:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalActionDSL.g:1857:3: ( rule__XConstructorCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1858:3: ( rule__XConstructorCall__Group__0 )
+            // InternalActionDSL.g:1858:4: rule__XConstructorCall__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXConstructorCall"
+
+
+    // $ANTLR start "entryRuleXBooleanLiteral"
+    // InternalActionDSL.g:1867:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    public final void entryRuleXBooleanLiteral() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1868:1: ( ruleXBooleanLiteral EOF )
+            // InternalActionDSL.g:1869:1: ruleXBooleanLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXBooleanLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBooleanLiteral"
+
+
+    // $ANTLR start "ruleXBooleanLiteral"
+    // InternalActionDSL.g:1876:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    public final void ruleXBooleanLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1880:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // InternalActionDSL.g:1881:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            {
+            // InternalActionDSL.g:1881:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalActionDSL.g:1882:3: ( rule__XBooleanLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1883:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalActionDSL.g:1883:4: rule__XBooleanLiteral__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBooleanLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXBooleanLiteral"
+
+
+    // $ANTLR start "entryRuleXNullLiteral"
+    // InternalActionDSL.g:1892:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    public final void entryRuleXNullLiteral() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1893:1: ( ruleXNullLiteral EOF )
+            // InternalActionDSL.g:1894:1: ruleXNullLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXNullLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNullLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXNullLiteral"
+
+
+    // $ANTLR start "ruleXNullLiteral"
+    // InternalActionDSL.g:1901:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    public final void ruleXNullLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1905:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // InternalActionDSL.g:1906:2: ( ( rule__XNullLiteral__Group__0 ) )
+            {
+            // InternalActionDSL.g:1906:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalActionDSL.g:1907:3: ( rule__XNullLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1908:3: ( rule__XNullLiteral__Group__0 )
+            // InternalActionDSL.g:1908:4: rule__XNullLiteral__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XNullLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXNullLiteral"
+
+
+    // $ANTLR start "entryRuleXNumberLiteral"
+    // InternalActionDSL.g:1917:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    public final void entryRuleXNumberLiteral() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1918:1: ( ruleXNumberLiteral EOF )
+            // InternalActionDSL.g:1919:1: ruleXNumberLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXNumberLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXNumberLiteral"
+
+
+    // $ANTLR start "ruleXNumberLiteral"
+    // InternalActionDSL.g:1926:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    public final void ruleXNumberLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1930:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // InternalActionDSL.g:1931:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            {
+            // InternalActionDSL.g:1931:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalActionDSL.g:1932:3: ( rule__XNumberLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1933:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalActionDSL.g:1933:4: rule__XNumberLiteral__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XNumberLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXNumberLiteral"
+
+
+    // $ANTLR start "entryRuleXStringLiteral"
+    // InternalActionDSL.g:1942:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    public final void entryRuleXStringLiteral() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1943:1: ( ruleXStringLiteral EOF )
+            // InternalActionDSL.g:1944:1: ruleXStringLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXStringLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXStringLiteral"
+
+
+    // $ANTLR start "ruleXStringLiteral"
+    // InternalActionDSL.g:1951:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    public final void ruleXStringLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1955:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // InternalActionDSL.g:1956:2: ( ( rule__XStringLiteral__Group__0 ) )
+            {
+            // InternalActionDSL.g:1956:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalActionDSL.g:1957:3: ( rule__XStringLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1958:3: ( rule__XStringLiteral__Group__0 )
+            // InternalActionDSL.g:1958:4: rule__XStringLiteral__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XStringLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXStringLiteral"
+
+
+    // $ANTLR start "entryRuleXTypeLiteral"
+    // InternalActionDSL.g:1967:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    public final void entryRuleXTypeLiteral() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1968:1: ( ruleXTypeLiteral EOF )
+            // InternalActionDSL.g:1969:1: ruleXTypeLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXTypeLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXTypeLiteral"
+
+
+    // $ANTLR start "ruleXTypeLiteral"
+    // InternalActionDSL.g:1976:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    public final void ruleXTypeLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:1980:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // InternalActionDSL.g:1981:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            {
+            // InternalActionDSL.g:1981:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalActionDSL.g:1982:3: ( rule__XTypeLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:1983:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalActionDSL.g:1983:4: rule__XTypeLiteral__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTypeLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXTypeLiteral"
+
+
+    // $ANTLR start "entryRuleXThrowExpression"
+    // InternalActionDSL.g:1992:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    public final void entryRuleXThrowExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:1993:1: ( ruleXThrowExpression EOF )
+            // InternalActionDSL.g:1994:1: ruleXThrowExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXThrowExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXThrowExpression"
+
+
+    // $ANTLR start "ruleXThrowExpression"
+    // InternalActionDSL.g:2001:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    public final void ruleXThrowExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2005:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // InternalActionDSL.g:2006:2: ( ( rule__XThrowExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:2006:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalActionDSL.g:2007:3: ( rule__XThrowExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2008:3: ( rule__XThrowExpression__Group__0 )
+            // InternalActionDSL.g:2008:4: rule__XThrowExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XThrowExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXThrowExpression"
+
+
+    // $ANTLR start "entryRuleXReturnExpression"
+    // InternalActionDSL.g:2017:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    public final void entryRuleXReturnExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2018:1: ( ruleXReturnExpression EOF )
+            // InternalActionDSL.g:2019:1: ruleXReturnExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXReturnExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXReturnExpression"
+
+
+    // $ANTLR start "ruleXReturnExpression"
+    // InternalActionDSL.g:2026:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    public final void ruleXReturnExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2030:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // InternalActionDSL.g:2031:2: ( ( rule__XReturnExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:2031:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalActionDSL.g:2032:3: ( rule__XReturnExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2033:3: ( rule__XReturnExpression__Group__0 )
+            // InternalActionDSL.g:2033:4: rule__XReturnExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XReturnExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXReturnExpression"
+
+
+    // $ANTLR start "entryRuleXTryCatchFinallyExpression"
+    // InternalActionDSL.g:2042:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2043:1: ( ruleXTryCatchFinallyExpression EOF )
+            // InternalActionDSL.g:2044:1: ruleXTryCatchFinallyExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXTryCatchFinallyExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXTryCatchFinallyExpression"
+
+
+    // $ANTLR start "ruleXTryCatchFinallyExpression"
+    // InternalActionDSL.g:2051:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2055:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // InternalActionDSL.g:2056:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:2056:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalActionDSL.g:2057:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2058:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalActionDSL.g:2058:4: rule__XTryCatchFinallyExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXTryCatchFinallyExpression"
+
+
+    // $ANTLR start "entryRuleXSynchronizedExpression"
+    // InternalActionDSL.g:2067:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    public final void entryRuleXSynchronizedExpression() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2068:1: ( ruleXSynchronizedExpression EOF )
+            // InternalActionDSL.g:2069:1: ruleXSynchronizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXSynchronizedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSynchronizedExpression"
+
+
+    // $ANTLR start "ruleXSynchronizedExpression"
+    // InternalActionDSL.g:2076:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    public final void ruleXSynchronizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2080:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // InternalActionDSL.g:2081:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            {
+            // InternalActionDSL.g:2081:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalActionDSL.g:2082:3: ( rule__XSynchronizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2083:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalActionDSL.g:2083:4: rule__XSynchronizedExpression__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXSynchronizedExpression"
+
+
+    // $ANTLR start "entryRuleXCatchClause"
+    // InternalActionDSL.g:2092:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    public final void entryRuleXCatchClause() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2093:1: ( ruleXCatchClause EOF )
+            // InternalActionDSL.g:2094:1: ruleXCatchClause EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXCatchClause();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCatchClause"
+
+
+    // $ANTLR start "ruleXCatchClause"
+    // InternalActionDSL.g:2101:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    public final void ruleXCatchClause() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2105:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // InternalActionDSL.g:2106:2: ( ( rule__XCatchClause__Group__0 ) )
+            {
+            // InternalActionDSL.g:2106:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalActionDSL.g:2107:3: ( rule__XCatchClause__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2108:3: ( rule__XCatchClause__Group__0 )
+            // InternalActionDSL.g:2108:4: rule__XCatchClause__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCatchClause__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCatchClause"
+
+
+    // $ANTLR start "entryRuleQualifiedName"
+    // InternalActionDSL.g:2117:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    public final void entryRuleQualifiedName() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2118:1: ( ruleQualifiedName EOF )
+            // InternalActionDSL.g:2119:1: ruleQualifiedName EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedName"
+
+
+    // $ANTLR start "ruleQualifiedName"
+    // InternalActionDSL.g:2126:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    public final void ruleQualifiedName() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2130:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // InternalActionDSL.g:2131:2: ( ( rule__QualifiedName__Group__0 ) )
+            {
+            // InternalActionDSL.g:2131:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalActionDSL.g:2132:3: ( rule__QualifiedName__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2133:3: ( rule__QualifiedName__Group__0 )
+            // InternalActionDSL.g:2133:4: rule__QualifiedName__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__QualifiedName__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedName"
+
+
+    // $ANTLR start "entryRuleNumber"
+    // InternalActionDSL.g:2142:1: entryRuleNumber : ruleNumber EOF ;
+    public final void entryRuleNumber() throws RecognitionException {
+         
+        	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+
+        try {
+            // InternalActionDSL.g:2146:1: ( ruleNumber EOF )
+            // InternalActionDSL.g:2147:1: ruleNumber EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	myHiddenTokenState.restore();
+
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNumber"
+
+
+    // $ANTLR start "ruleNumber"
+    // InternalActionDSL.g:2157:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    public final void ruleNumber() throws RecognitionException {
+
+        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2162:2: ( ( ( rule__Number__Alternatives ) ) )
+            // InternalActionDSL.g:2163:2: ( ( rule__Number__Alternatives ) )
+            {
+            // InternalActionDSL.g:2163:2: ( ( rule__Number__Alternatives ) )
+            // InternalActionDSL.g:2164:3: ( rule__Number__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:2165:3: ( rule__Number__Alternatives )
+            // InternalActionDSL.g:2165:4: rule__Number__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__Number__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+            	myHiddenTokenState.restore();
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNumber"
+
+
+    // $ANTLR start "entryRuleJvmTypeReference"
+    // InternalActionDSL.g:2175:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    public final void entryRuleJvmTypeReference() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2176:1: ( ruleJvmTypeReference EOF )
+            // InternalActionDSL.g:2177:1: ruleJvmTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmTypeReference"
+
+
+    // $ANTLR start "ruleJvmTypeReference"
+    // InternalActionDSL.g:2184:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    public final void ruleJvmTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2188:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // InternalActionDSL.g:2189:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            {
+            // InternalActionDSL.g:2189:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalActionDSL.g:2190:3: ( rule__JvmTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:2191:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalActionDSL.g:2191:4: rule__JvmTypeReference__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmTypeReference__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmTypeReference"
+
+
+    // $ANTLR start "entryRuleArrayBrackets"
+    // InternalActionDSL.g:2200:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    public final void entryRuleArrayBrackets() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2201:1: ( ruleArrayBrackets EOF )
+            // InternalActionDSL.g:2202:1: ruleArrayBrackets EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleArrayBrackets();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getArrayBracketsRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleArrayBrackets"
+
+
+    // $ANTLR start "ruleArrayBrackets"
+    // InternalActionDSL.g:2209:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    public final void ruleArrayBrackets() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2213:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // InternalActionDSL.g:2214:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            {
+            // InternalActionDSL.g:2214:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalActionDSL.g:2215:3: ( rule__ArrayBrackets__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2216:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalActionDSL.g:2216:4: rule__ArrayBrackets__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ArrayBrackets__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleArrayBrackets"
+
+
+    // $ANTLR start "entryRuleXFunctionTypeRef"
+    // InternalActionDSL.g:2225:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    public final void entryRuleXFunctionTypeRef() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2226:1: ( ruleXFunctionTypeRef EOF )
+            // InternalActionDSL.g:2227:1: ruleXFunctionTypeRef EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXFunctionTypeRef();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXFunctionTypeRef"
+
+
+    // $ANTLR start "ruleXFunctionTypeRef"
+    // InternalActionDSL.g:2234:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    public final void ruleXFunctionTypeRef() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2238:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // InternalActionDSL.g:2239:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            {
+            // InternalActionDSL.g:2239:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalActionDSL.g:2240:3: ( rule__XFunctionTypeRef__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2241:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalActionDSL.g:2241:4: rule__XFunctionTypeRef__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXFunctionTypeRef"
+
+
+    // $ANTLR start "entryRuleJvmParameterizedTypeReference"
+    // InternalActionDSL.g:2250:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2251:1: ( ruleJvmParameterizedTypeReference EOF )
+            // InternalActionDSL.g:2252:1: ruleJvmParameterizedTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleJvmParameterizedTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "ruleJvmParameterizedTypeReference"
+    // InternalActionDSL.g:2259:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2263:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // InternalActionDSL.g:2264:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            {
+            // InternalActionDSL.g:2264:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalActionDSL.g:2265:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2266:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalActionDSL.g:2266:4: rule__JvmParameterizedTypeReference__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmArgumentTypeReference"
+    // InternalActionDSL.g:2275:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2276:1: ( ruleJvmArgumentTypeReference EOF )
+            // InternalActionDSL.g:2277:1: ruleJvmArgumentTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmArgumentTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmArgumentTypeReference"
+
+
+    // $ANTLR start "ruleJvmArgumentTypeReference"
+    // InternalActionDSL.g:2284:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    public final void ruleJvmArgumentTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2288:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // InternalActionDSL.g:2289:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            {
+            // InternalActionDSL.g:2289:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalActionDSL.g:2290:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:2291:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalActionDSL.g:2291:4: rule__JvmArgumentTypeReference__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmArgumentTypeReference__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmArgumentTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmWildcardTypeReference"
+    // InternalActionDSL.g:2300:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2301:1: ( ruleJvmWildcardTypeReference EOF )
+            // InternalActionDSL.g:2302:1: ruleJvmWildcardTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleJvmWildcardTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "ruleJvmWildcardTypeReference"
+    // InternalActionDSL.g:2309:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    public final void ruleJvmWildcardTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2313:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // InternalActionDSL.g:2314:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            {
+            // InternalActionDSL.g:2314:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalActionDSL.g:2315:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2316:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalActionDSL.g:2316:4: rule__JvmWildcardTypeReference__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmUpperBound"
+    // InternalActionDSL.g:2325:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    public final void entryRuleJvmUpperBound() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2326:1: ( ruleJvmUpperBound EOF )
+            // InternalActionDSL.g:2327:1: ruleJvmUpperBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleJvmUpperBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmUpperBound"
+
+
+    // $ANTLR start "ruleJvmUpperBound"
+    // InternalActionDSL.g:2334:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    public final void ruleJvmUpperBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2338:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // InternalActionDSL.g:2339:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            {
+            // InternalActionDSL.g:2339:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalActionDSL.g:2340:3: ( rule__JvmUpperBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2341:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalActionDSL.g:2341:4: rule__JvmUpperBound__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmUpperBound__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmUpperBound"
+
+
+    // $ANTLR start "entryRuleJvmUpperBoundAnded"
+    // InternalActionDSL.g:2350:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2351:1: ( ruleJvmUpperBoundAnded EOF )
+            // InternalActionDSL.g:2352:1: ruleJvmUpperBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleJvmUpperBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmUpperBoundAnded"
+
+
+    // $ANTLR start "ruleJvmUpperBoundAnded"
+    // InternalActionDSL.g:2359:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmUpperBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2363:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // InternalActionDSL.g:2364:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            {
+            // InternalActionDSL.g:2364:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalActionDSL.g:2365:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2366:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalActionDSL.g:2366:4: rule__JvmUpperBoundAnded__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmUpperBoundAnded__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmUpperBoundAnded"
+
+
+    // $ANTLR start "entryRuleJvmLowerBound"
+    // InternalActionDSL.g:2375:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    public final void entryRuleJvmLowerBound() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2376:1: ( ruleJvmLowerBound EOF )
+            // InternalActionDSL.g:2377:1: ruleJvmLowerBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleJvmLowerBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmLowerBound"
+
+
+    // $ANTLR start "ruleJvmLowerBound"
+    // InternalActionDSL.g:2384:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    public final void ruleJvmLowerBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2388:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // InternalActionDSL.g:2389:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            {
+            // InternalActionDSL.g:2389:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalActionDSL.g:2390:3: ( rule__JvmLowerBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2391:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalActionDSL.g:2391:4: rule__JvmLowerBound__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmLowerBound__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmLowerBound"
+
+
+    // $ANTLR start "entryRuleJvmLowerBoundAnded"
+    // InternalActionDSL.g:2400:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2401:1: ( ruleJvmLowerBoundAnded EOF )
+            // InternalActionDSL.g:2402:1: ruleJvmLowerBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleJvmLowerBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmLowerBoundAnded"
+
+
+    // $ANTLR start "ruleJvmLowerBoundAnded"
+    // InternalActionDSL.g:2409:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmLowerBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2413:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // InternalActionDSL.g:2414:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            {
+            // InternalActionDSL.g:2414:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalActionDSL.g:2415:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2416:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalActionDSL.g:2416:4: rule__JvmLowerBoundAnded__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmLowerBoundAnded__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmLowerBoundAnded"
+
+
+    // $ANTLR start "entryRuleQualifiedNameWithWildcard"
+    // InternalActionDSL.g:2425:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2426:1: ( ruleQualifiedNameWithWildcard EOF )
+            // InternalActionDSL.g:2427:1: ruleQualifiedNameWithWildcard EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleQualifiedNameWithWildcard();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedNameWithWildcard"
+
+
+    // $ANTLR start "ruleQualifiedNameWithWildcard"
+    // InternalActionDSL.g:2434:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2438:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // InternalActionDSL.g:2439:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            {
+            // InternalActionDSL.g:2439:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalActionDSL.g:2440:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2441:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalActionDSL.g:2441:4: rule__QualifiedNameWithWildcard__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__QualifiedNameWithWildcard__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedNameWithWildcard"
+
+
+    // $ANTLR start "entryRuleValidID"
+    // InternalActionDSL.g:2450:1: entryRuleValidID : ruleValidID EOF ;
+    public final void entryRuleValidID() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2451:1: ( ruleValidID EOF )
+            // InternalActionDSL.g:2452:1: ruleValidID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getValidIDRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getValidIDRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleValidID"
+
+
+    // $ANTLR start "ruleValidID"
+    // InternalActionDSL.g:2459:1: ruleValidID : ( RULE_ID ) ;
+    public final void ruleValidID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2463:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:2464:2: ( RULE_ID )
+            {
+            // InternalActionDSL.g:2464:2: ( RULE_ID )
+            // InternalActionDSL.g:2465:3: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleValidID"
+
+
+    // $ANTLR start "entryRuleXImportSection"
+    // InternalActionDSL.g:2475:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    public final void entryRuleXImportSection() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2476:1: ( ruleXImportSection EOF )
+            // InternalActionDSL.g:2477:1: ruleXImportSection EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleXImportSection();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXImportSection"
+
+
+    // $ANTLR start "ruleXImportSection"
+    // InternalActionDSL.g:2484:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    public final void ruleXImportSection() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2488:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // InternalActionDSL.g:2489:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            {
+            // InternalActionDSL.g:2489:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalActionDSL.g:2490:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            {
+            // InternalActionDSL.g:2490:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // InternalActionDSL.g:2491:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // InternalActionDSL.g:2492:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalActionDSL.g:2492:5: rule__XImportSection__ImportDeclarationsAssignment
+            {
+            pushFollow(FOLLOW_3);
+            rule__XImportSection__ImportDeclarationsAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+
+            }
+
+            // InternalActionDSL.g:2495:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalActionDSL.g:2496:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // InternalActionDSL.g:2497:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==49) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // InternalActionDSL.g:2497:5: rule__XImportSection__ImportDeclarationsAssignment
+            	    {
+            	    pushFollow(FOLLOW_3);
+            	    rule__XImportSection__ImportDeclarationsAssignment();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXImportSection"
+
+
+    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+    // InternalActionDSL.g:2507:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        try {
+            // InternalActionDSL.g:2508:1: ( ruleQualifiedNameInStaticImport EOF )
+            // InternalActionDSL.g:2509:1: ruleQualifiedNameInStaticImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleQualifiedNameInStaticImport();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleQualifiedNameInStaticImport"
+    // InternalActionDSL.g:2516:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2520:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // InternalActionDSL.g:2521:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            {
+            // InternalActionDSL.g:2521:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalActionDSL.g:2522:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            {
+            // InternalActionDSL.g:2522:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // InternalActionDSL.g:2523:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2524:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalActionDSL.g:2524:5: rule__QualifiedNameInStaticImport__Group__0
+            {
+            pushFollow(FOLLOW_4);
+            rule__QualifiedNameInStaticImport__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+
+            }
+
+            // InternalActionDSL.g:2527:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalActionDSL.g:2528:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // InternalActionDSL.g:2529:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==RULE_ID) ) {
+                    int LA2_2 = input.LA(2);
+
+                    if ( (LA2_2==45) ) {
+                        alt2=1;
+                    }
+
+
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // InternalActionDSL.g:2529:5: rule__QualifiedNameInStaticImport__Group__0
+            	    {
+            	    pushFollow(FOLLOW_4);
+            	    rule__QualifiedNameInStaticImport__Group__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleTaskActionEnum"
+    // InternalActionDSL.g:2539:1: ruleTaskActionEnum : ( ( rule__TaskActionEnum__Alternatives ) ) ;
+    public final void ruleTaskActionEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2543:1: ( ( ( rule__TaskActionEnum__Alternatives ) ) )
+            // InternalActionDSL.g:2544:2: ( ( rule__TaskActionEnum__Alternatives ) )
+            {
+            // InternalActionDSL.g:2544:2: ( ( rule__TaskActionEnum__Alternatives ) )
+            // InternalActionDSL.g:2545:3: ( rule__TaskActionEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTaskActionEnumAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:2546:3: ( rule__TaskActionEnum__Alternatives )
+            // InternalActionDSL.g:2546:4: rule__TaskActionEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__TaskActionEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTaskActionEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTaskActionEnum"
+
+
+    // $ANTLR start "ruleSelectWorkloadActionEnum"
+    // InternalActionDSL.g:2555:1: ruleSelectWorkloadActionEnum : ( ( rule__SelectWorkloadActionEnum__Alternatives ) ) ;
+    public final void ruleSelectWorkloadActionEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2559:1: ( ( ( rule__SelectWorkloadActionEnum__Alternatives ) ) )
+            // InternalActionDSL.g:2560:2: ( ( rule__SelectWorkloadActionEnum__Alternatives ) )
+            {
+            // InternalActionDSL.g:2560:2: ( ( rule__SelectWorkloadActionEnum__Alternatives ) )
+            // InternalActionDSL.g:2561:3: ( rule__SelectWorkloadActionEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSelectWorkloadActionEnumAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:2562:3: ( rule__SelectWorkloadActionEnum__Alternatives )
+            // InternalActionDSL.g:2562:4: rule__SelectWorkloadActionEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__SelectWorkloadActionEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSelectWorkloadActionEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSelectWorkloadActionEnum"
+
+
+    // $ANTLR start "ruleDialogActionEnum"
+    // InternalActionDSL.g:2571:1: ruleDialogActionEnum : ( ( rule__DialogActionEnum__Alternatives ) ) ;
+    public final void ruleDialogActionEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2575:1: ( ( ( rule__DialogActionEnum__Alternatives ) ) )
+            // InternalActionDSL.g:2576:2: ( ( rule__DialogActionEnum__Alternatives ) )
+            {
+            // InternalActionDSL.g:2576:2: ( ( rule__DialogActionEnum__Alternatives ) )
+            // InternalActionDSL.g:2577:3: ( rule__DialogActionEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDialogActionEnumAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:2578:3: ( rule__DialogActionEnum__Alternatives )
+            // InternalActionDSL.g:2578:4: rule__DialogActionEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__DialogActionEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDialogActionEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDialogActionEnum"
+
+
+    // $ANTLR start "ruleReportActionEnum"
+    // InternalActionDSL.g:2587:1: ruleReportActionEnum : ( ( rule__ReportActionEnum__Alternatives ) ) ;
+    public final void ruleReportActionEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2591:1: ( ( ( rule__ReportActionEnum__Alternatives ) ) )
+            // InternalActionDSL.g:2592:2: ( ( rule__ReportActionEnum__Alternatives ) )
+            {
+            // InternalActionDSL.g:2592:2: ( ( rule__ReportActionEnum__Alternatives ) )
+            // InternalActionDSL.g:2593:3: ( rule__ReportActionEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getReportActionEnumAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:2594:3: ( rule__ReportActionEnum__Alternatives )
+            // InternalActionDSL.g:2594:4: rule__ReportActionEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__ReportActionEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getReportActionEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleReportActionEnum"
+
+
+    // $ANTLR start "ruleChartActionEnum"
+    // InternalActionDSL.g:2603:1: ruleChartActionEnum : ( ( 'Download' ) ) ;
+    public final void ruleChartActionEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2607:1: ( ( ( 'Download' ) ) )
+            // InternalActionDSL.g:2608:2: ( ( 'Download' ) )
+            {
+            // InternalActionDSL.g:2608:2: ( ( 'Download' ) )
+            // InternalActionDSL.g:2609:3: ( 'Download' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration()); 
+            }
+            // InternalActionDSL.g:2610:3: ( 'Download' )
+            // InternalActionDSL.g:2610:4: 'Download'
+            {
+            match(input,16,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartActionEnum"
+
+
+    // $ANTLR start "ruleWorkflowActionEnum"
+    // InternalActionDSL.g:2619:1: ruleWorkflowActionEnum : ( ( 'Start' ) ) ;
+    public final void ruleWorkflowActionEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2623:1: ( ( ( 'Start' ) ) )
+            // InternalActionDSL.g:2624:2: ( ( 'Start' ) )
+            {
+            // InternalActionDSL.g:2624:2: ( ( 'Start' ) )
+            // InternalActionDSL.g:2625:3: ( 'Start' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration()); 
+            }
+            // InternalActionDSL.g:2626:3: ( 'Start' )
+            // InternalActionDSL.g:2626:4: 'Start'
+            {
+            match(input,17,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleWorkflowActionEnum"
+
+
+    // $ANTLR start "ruleDatainterchangeActionEnum"
+    // InternalActionDSL.g:2635:1: ruleDatainterchangeActionEnum : ( ( rule__DatainterchangeActionEnum__Alternatives ) ) ;
+    public final void ruleDatainterchangeActionEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2639:1: ( ( ( rule__DatainterchangeActionEnum__Alternatives ) ) )
+            // InternalActionDSL.g:2640:2: ( ( rule__DatainterchangeActionEnum__Alternatives ) )
+            {
+            // InternalActionDSL.g:2640:2: ( ( rule__DatainterchangeActionEnum__Alternatives ) )
+            // InternalActionDSL.g:2641:3: ( rule__DatainterchangeActionEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDatainterchangeActionEnumAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:2642:3: ( rule__DatainterchangeActionEnum__Alternatives )
+            // InternalActionDSL.g:2642:4: rule__DatainterchangeActionEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__DatainterchangeActionEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDatainterchangeActionEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDatainterchangeActionEnum"
+
+
+    // $ANTLR start "ruleUIActionEnum"
+    // InternalActionDSL.g:2651:1: ruleUIActionEnum : ( ( rule__UIActionEnum__Alternatives ) ) ;
+    public final void ruleUIActionEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2655:1: ( ( ( rule__UIActionEnum__Alternatives ) ) )
+            // InternalActionDSL.g:2656:2: ( ( rule__UIActionEnum__Alternatives ) )
+            {
+            // InternalActionDSL.g:2656:2: ( ( rule__UIActionEnum__Alternatives ) )
+            // InternalActionDSL.g:2657:3: ( rule__UIActionEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getUIActionEnumAccess().getAlternatives()); 
+            }
+            // InternalActionDSL.g:2658:3: ( rule__UIActionEnum__Alternatives )
+            // InternalActionDSL.g:2658:4: rule__UIActionEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__UIActionEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getUIActionEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleUIActionEnum"
+
+
+    // $ANTLR start "rule__ActionType__Alternatives"
+    // InternalActionDSL.g:2666:1: rule__ActionType__Alternatives : ( ( ruleActionTask ) | ( ruleActionSelectWorkload ) | ( ruleActionDialog ) | ( ruleActionReport ) | ( ruleActionChart ) | ( ruleActionWorkflow ) | ( ruleActionFunction ) | ( ruleActionDatainterchange ) | ( ruleActionUI ) );
+    public final void rule__ActionType__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2670:1: ( ( ruleActionTask ) | ( ruleActionSelectWorkload ) | ( ruleActionDialog ) | ( ruleActionReport ) | ( ruleActionChart ) | ( ruleActionWorkflow ) | ( ruleActionFunction ) | ( ruleActionDatainterchange ) | ( ruleActionUI ) )
+            int alt3=9;
+            switch ( input.LA(1) ) {
+            case 86:
+                {
+                alt3=1;
+                }
+                break;
+            case 87:
+                {
+                alt3=2;
+                }
+                break;
+            case 88:
+                {
+                alt3=3;
+                }
+                break;
+            case 89:
+                {
+                alt3=4;
+                }
+                break;
+            case 90:
+                {
+                alt3=5;
+                }
+                break;
+            case 91:
+                {
+                alt3=6;
+                }
+                break;
+            case 94:
+                {
+                alt3=7;
+                }
+                break;
+            case 92:
+                {
+                alt3=8;
+                }
+                break;
+            case 93:
+                {
+                alt3=9;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt3) {
+                case 1 :
+                    // InternalActionDSL.g:2671:2: ( ruleActionTask )
+                    {
+                    // InternalActionDSL.g:2671:2: ( ruleActionTask )
+                    // InternalActionDSL.g:2672:3: ruleActionTask
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionTypeAccess().getActionTaskParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleActionTask();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionTypeAccess().getActionTaskParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2677:2: ( ruleActionSelectWorkload )
+                    {
+                    // InternalActionDSL.g:2677:2: ( ruleActionSelectWorkload )
+                    // InternalActionDSL.g:2678:3: ruleActionSelectWorkload
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionTypeAccess().getActionSelectWorkloadParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleActionSelectWorkload();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionTypeAccess().getActionSelectWorkloadParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:2683:2: ( ruleActionDialog )
+                    {
+                    // InternalActionDSL.g:2683:2: ( ruleActionDialog )
+                    // InternalActionDSL.g:2684:3: ruleActionDialog
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionTypeAccess().getActionDialogParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleActionDialog();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionTypeAccess().getActionDialogParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:2689:2: ( ruleActionReport )
+                    {
+                    // InternalActionDSL.g:2689:2: ( ruleActionReport )
+                    // InternalActionDSL.g:2690:3: ruleActionReport
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionTypeAccess().getActionReportParserRuleCall_3()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleActionReport();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionTypeAccess().getActionReportParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:2695:2: ( ruleActionChart )
+                    {
+                    // InternalActionDSL.g:2695:2: ( ruleActionChart )
+                    // InternalActionDSL.g:2696:3: ruleActionChart
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionTypeAccess().getActionChartParserRuleCall_4()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleActionChart();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionTypeAccess().getActionChartParserRuleCall_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalActionDSL.g:2701:2: ( ruleActionWorkflow )
+                    {
+                    // InternalActionDSL.g:2701:2: ( ruleActionWorkflow )
+                    // InternalActionDSL.g:2702:3: ruleActionWorkflow
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionTypeAccess().getActionWorkflowParserRuleCall_5()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleActionWorkflow();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionTypeAccess().getActionWorkflowParserRuleCall_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalActionDSL.g:2707:2: ( ruleActionFunction )
+                    {
+                    // InternalActionDSL.g:2707:2: ( ruleActionFunction )
+                    // InternalActionDSL.g:2708:3: ruleActionFunction
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionTypeAccess().getActionFunctionParserRuleCall_6()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleActionFunction();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionTypeAccess().getActionFunctionParserRuleCall_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalActionDSL.g:2713:2: ( ruleActionDatainterchange )
+                    {
+                    // InternalActionDSL.g:2713:2: ( ruleActionDatainterchange )
+                    // InternalActionDSL.g:2714:3: ruleActionDatainterchange
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionTypeAccess().getActionDatainterchangeParserRuleCall_7()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleActionDatainterchange();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionTypeAccess().getActionDatainterchangeParserRuleCall_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalActionDSL.g:2719:2: ( ruleActionUI )
+                    {
+                    // InternalActionDSL.g:2719:2: ( ruleActionUI )
+                    // InternalActionDSL.g:2720:3: ruleActionUI
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionTypeAccess().getActionUIParserRuleCall_8()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleActionUI();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionTypeAccess().getActionUIParserRuleCall_8()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionType__Alternatives"
+
+
+    // $ANTLR start "rule__ActionFunction__Alternatives_5"
+    // InternalActionDSL.g:2729:1: rule__ActionFunction__Alternatives_5 : ( ( ( rule__ActionFunction__Group_5_0__0 ) ) | ( ( rule__ActionFunction__Group_5_1__0 ) ) );
+    public final void rule__ActionFunction__Alternatives_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2733:1: ( ( ( rule__ActionFunction__Group_5_0__0 ) ) | ( ( rule__ActionFunction__Group_5_1__0 ) ) )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==131) ) {
+                alt4=1;
+            }
+            else if ( (LA4_0==134) ) {
+                alt4=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // InternalActionDSL.g:2734:2: ( ( rule__ActionFunction__Group_5_0__0 ) )
+                    {
+                    // InternalActionDSL.g:2734:2: ( ( rule__ActionFunction__Group_5_0__0 ) )
+                    // InternalActionDSL.g:2735:3: ( rule__ActionFunction__Group_5_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionFunctionAccess().getGroup_5_0()); 
+                    }
+                    // InternalActionDSL.g:2736:3: ( rule__ActionFunction__Group_5_0__0 )
+                    // InternalActionDSL.g:2736:4: rule__ActionFunction__Group_5_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionFunction__Group_5_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionFunctionAccess().getGroup_5_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2740:2: ( ( rule__ActionFunction__Group_5_1__0 ) )
+                    {
+                    // InternalActionDSL.g:2740:2: ( ( rule__ActionFunction__Group_5_1__0 ) )
+                    // InternalActionDSL.g:2741:3: ( rule__ActionFunction__Group_5_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getActionFunctionAccess().getGroup_5_1()); 
+                    }
+                    // InternalActionDSL.g:2742:3: ( rule__ActionFunction__Group_5_1__0 )
+                    // InternalActionDSL.g:2742:4: rule__ActionFunction__Group_5_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionFunction__Group_5_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getActionFunctionAccess().getGroup_5_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Alternatives_5"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
+    // InternalActionDSL.g:2750:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
+    public final void rule__XImportDeclaration__Alternatives_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2754:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            int alt5=4;
+            alt5 = dfa5.predict(input);
+            switch (alt5) {
+                case 1 :
+                    // InternalActionDSL.g:2755:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    {
+                    // InternalActionDSL.g:2755:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalActionDSL.g:2756:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
+                    }
+                    // InternalActionDSL.g:2757:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalActionDSL.g:2757:4: rule__XImportDeclaration__Group_2_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XImportDeclaration__Group_2_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2761:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    {
+                    // InternalActionDSL.g:2761:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalActionDSL.g:2762:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
+                    }
+                    // InternalActionDSL.g:2763:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalActionDSL.g:2763:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XImportDeclaration__ImportedTypeAssignment_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:2767:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    {
+                    // InternalActionDSL.g:2767:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalActionDSL.g:2768:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
+                    }
+                    // InternalActionDSL.g:2769:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalActionDSL.g:2769:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XImportDeclaration__ImportedNamespaceAssignment_2_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:2773:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    {
+                    // InternalActionDSL.g:2773:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalActionDSL.g:2774:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
+                    }
+                    // InternalActionDSL.g:2775:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalActionDSL.g:2775:4: rule__XImportDeclaration__Group_2_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XImportDeclaration__Group_2_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Alternatives_2"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Alternatives_2_0_3"
+    // InternalActionDSL.g:2783:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
+    public final void rule__XImportDeclaration__Alternatives_2_0_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2787:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==38) ) {
+                alt6=1;
+            }
+            else if ( (LA6_0==RULE_ID) ) {
+                alt6=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // InternalActionDSL.g:2788:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    {
+                    // InternalActionDSL.g:2788:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalActionDSL.g:2789:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
+                    }
+                    // InternalActionDSL.g:2790:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalActionDSL.g:2790:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XImportDeclaration__WildcardAssignment_2_0_3_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2794:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    {
+                    // InternalActionDSL.g:2794:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalActionDSL.g:2795:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
+                    }
+                    // InternalActionDSL.g:2796:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalActionDSL.g:2796:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XImportDeclaration__MemberNameAssignment_2_0_3_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Alternatives_2_0_3"
+
+
+    // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
+    // InternalActionDSL.g:2804:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
+    public final void rule__XAnnotation__Alternatives_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2808:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt7=2;
+            alt7 = dfa7.predict(input);
+            switch (alt7) {
+                case 1 :
+                    // InternalActionDSL.g:2809:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    {
+                    // InternalActionDSL.g:2809:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalActionDSL.g:2810:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+                    // InternalActionDSL.g:2811:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalActionDSL.g:2811:4: rule__XAnnotation__Group_3_1_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotation__Group_3_1_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2815:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    {
+                    // InternalActionDSL.g:2815:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalActionDSL.g:2816:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+                    // InternalActionDSL.g:2817:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalActionDSL.g:2817:4: rule__XAnnotation__ValueAssignment_3_1_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotation__ValueAssignment_3_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Alternatives_3_1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
+    // InternalActionDSL.g:2825:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
+    public final void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2829:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt8=2;
+            alt8 = dfa8.predict(input);
+            switch (alt8) {
+                case 1 :
+                    // InternalActionDSL.g:2830:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    {
+                    // InternalActionDSL.g:2830:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalActionDSL.g:2831:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+                    }
+                    // InternalActionDSL.g:2832:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalActionDSL.g:2832:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotationElementValueOrCommaList__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2836:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    {
+                    // InternalActionDSL.g:2836:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalActionDSL.g:2837:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
+                    }
+                    // InternalActionDSL.g:2838:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalActionDSL.g:2838:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotationElementValueOrCommaList__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Alternatives"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
+    // InternalActionDSL.g:2846:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2850:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt9=2;
+            alt9 = dfa9.predict(input);
+            switch (alt9) {
+                case 1 :
+                    // InternalActionDSL.g:2851:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    {
+                    // InternalActionDSL.g:2851:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalActionDSL.g:2852:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+                    }
+                    // InternalActionDSL.g:2853:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalActionDSL.g:2853:4: rule__XAnnotationElementValue__Group_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotationElementValue__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2857:2: ( ruleXAnnotationOrExpression )
+                    {
+                    // InternalActionDSL.g:2857:2: ( ruleXAnnotationOrExpression )
+                    // InternalActionDSL.g:2858:3: ruleXAnnotationOrExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Alternatives"
+
+
+    // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
+    // InternalActionDSL.g:2867:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2871:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==100) ) {
+                alt10=1;
+            }
+            else if ( ((LA10_0>=RULE_ID && LA10_0<=RULE_DECIMAL)||LA10_0==29||(LA10_0>=36 && LA10_0<=37)||LA10_0==42||(LA10_0>=47 && LA10_0<=52)||LA10_0==79||LA10_0==101||(LA10_0>=105 && LA10_0<=106)||LA10_0==109||LA10_0==111||(LA10_0>=115 && LA10_0<=123)||LA10_0==125||LA10_0==140) ) {
+                alt10=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+            switch (alt10) {
+                case 1 :
+                    // InternalActionDSL.g:2872:2: ( ruleXAnnotation )
+                    {
+                    // InternalActionDSL.g:2872:2: ( ruleXAnnotation )
+                    // InternalActionDSL.g:2873:3: ruleXAnnotation
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXAnnotation();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2878:2: ( ruleXExpression )
+                    {
+                    // InternalActionDSL.g:2878:2: ( ruleXExpression )
+                    // InternalActionDSL.g:2879:3: ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationOrExpression__Alternatives"
+
+
+    // $ANTLR start "rule__XAssignment__Alternatives"
+    // InternalActionDSL.g:2888:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
+    public final void rule__XAssignment__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2892:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt11=2;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                int LA11_1 = input.LA(2);
+
+                if ( (LA11_1==13) ) {
+                    alt11=1;
+                }
+                else if ( (LA11_1==EOF||(LA11_1>=RULE_ID && LA11_1<=RULE_DECIMAL)||(LA11_1>=14 && LA11_1<=15)||(LA11_1>=18 && LA11_1<=52)||(LA11_1>=79 && LA11_1<=80)||LA11_1==99||(LA11_1>=101 && LA11_1<=126)||(LA11_1>=136 && LA11_1<=137)||(LA11_1>=139 && LA11_1<=140)) ) {
+                    alt11=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 47:
+                {
+                int LA11_2 = input.LA(2);
+
+                if ( (LA11_2==13) ) {
+                    alt11=1;
+                }
+                else if ( (LA11_2==EOF||(LA11_2>=RULE_ID && LA11_2<=RULE_DECIMAL)||(LA11_2>=14 && LA11_2<=15)||(LA11_2>=18 && LA11_2<=52)||(LA11_2>=79 && LA11_2<=80)||LA11_2==99||(LA11_2>=101 && LA11_2<=126)||(LA11_2>=136 && LA11_2<=137)||(LA11_2>=139 && LA11_2<=140)) ) {
+                    alt11=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 48:
+                {
+                int LA11_3 = input.LA(2);
+
+                if ( (LA11_3==13) ) {
+                    alt11=1;
+                }
+                else if ( (LA11_3==EOF||(LA11_3>=RULE_ID && LA11_3<=RULE_DECIMAL)||(LA11_3>=14 && LA11_3<=15)||(LA11_3>=18 && LA11_3<=52)||(LA11_3>=79 && LA11_3<=80)||LA11_3==99||(LA11_3>=101 && LA11_3<=126)||(LA11_3>=136 && LA11_3<=137)||(LA11_3>=139 && LA11_3<=140)) ) {
+                    alt11=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 49:
+                {
+                int LA11_4 = input.LA(2);
+
+                if ( (LA11_4==13) ) {
+                    alt11=1;
+                }
+                else if ( (LA11_4==EOF||(LA11_4>=RULE_ID && LA11_4<=RULE_DECIMAL)||(LA11_4>=14 && LA11_4<=15)||(LA11_4>=18 && LA11_4<=52)||(LA11_4>=79 && LA11_4<=80)||LA11_4==99||(LA11_4>=101 && LA11_4<=126)||(LA11_4>=136 && LA11_4<=137)||(LA11_4>=139 && LA11_4<=140)) ) {
+                    alt11=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 50:
+                {
+                int LA11_5 = input.LA(2);
+
+                if ( (LA11_5==13) ) {
+                    alt11=1;
+                }
+                else if ( (LA11_5==EOF||(LA11_5>=RULE_ID && LA11_5<=RULE_DECIMAL)||(LA11_5>=14 && LA11_5<=15)||(LA11_5>=18 && LA11_5<=52)||(LA11_5>=79 && LA11_5<=80)||LA11_5==99||(LA11_5>=101 && LA11_5<=126)||(LA11_5>=136 && LA11_5<=137)||(LA11_5>=139 && LA11_5<=140)) ) {
+                    alt11=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 5, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_STRING:
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+            case 29:
+            case 36:
+            case 37:
+            case 42:
+            case 51:
+            case 52:
+            case 79:
+            case 101:
+            case 105:
+            case 106:
+            case 109:
+            case 111:
+            case 115:
+            case 116:
+            case 117:
+            case 118:
+            case 119:
+            case 120:
+            case 121:
+            case 122:
+            case 123:
+            case 125:
+            case 140:
+                {
+                alt11=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt11) {
+                case 1 :
+                    // InternalActionDSL.g:2893:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    {
+                    // InternalActionDSL.g:2893:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalActionDSL.g:2894:3: ( rule__XAssignment__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
+                    }
+                    // InternalActionDSL.g:2895:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalActionDSL.g:2895:4: rule__XAssignment__Group_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAssignment__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAssignmentAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2899:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    {
+                    // InternalActionDSL.g:2899:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalActionDSL.g:2900:3: ( rule__XAssignment__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
+                    }
+                    // InternalActionDSL.g:2901:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalActionDSL.g:2901:4: rule__XAssignment__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAssignment__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAssignmentAccess().getGroup_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Alternatives"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Alternatives"
+    // InternalActionDSL.g:2909:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
+    public final void rule__OpMultiAssign__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2913:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt12=7;
+            switch ( input.LA(1) ) {
+            case 18:
+                {
+                alt12=1;
+                }
+                break;
+            case 19:
+                {
+                alt12=2;
+                }
+                break;
+            case 20:
+                {
+                alt12=3;
+                }
+                break;
+            case 21:
+                {
+                alt12=4;
+                }
+                break;
+            case 22:
+                {
+                alt12=5;
+                }
+                break;
+            case 29:
+                {
+                alt12=6;
+                }
+                break;
+            case 28:
+                {
+                alt12=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt12) {
+                case 1 :
+                    // InternalActionDSL.g:2914:2: ( '+=' )
+                    {
+                    // InternalActionDSL.g:2914:2: ( '+=' )
+                    // InternalActionDSL.g:2915:3: '+='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,18,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2920:2: ( '-=' )
+                    {
+                    // InternalActionDSL.g:2920:2: ( '-=' )
+                    // InternalActionDSL.g:2921:3: '-='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                    }
+                    match(input,19,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:2926:2: ( '*=' )
+                    {
+                    // InternalActionDSL.g:2926:2: ( '*=' )
+                    // InternalActionDSL.g:2927:3: '*='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                    }
+                    match(input,20,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:2932:2: ( '/=' )
+                    {
+                    // InternalActionDSL.g:2932:2: ( '/=' )
+                    // InternalActionDSL.g:2933:3: '/='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                    }
+                    match(input,21,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:2938:2: ( '%=' )
+                    {
+                    // InternalActionDSL.g:2938:2: ( '%=' )
+                    // InternalActionDSL.g:2939:3: '%='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                    }
+                    match(input,22,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalActionDSL.g:2944:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    {
+                    // InternalActionDSL.g:2944:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalActionDSL.g:2945:3: ( rule__OpMultiAssign__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
+                    }
+                    // InternalActionDSL.g:2946:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalActionDSL.g:2946:4: rule__OpMultiAssign__Group_5__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__OpMultiAssign__Group_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalActionDSL.g:2950:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    {
+                    // InternalActionDSL.g:2950:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalActionDSL.g:2951:3: ( rule__OpMultiAssign__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
+                    }
+                    // InternalActionDSL.g:2952:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalActionDSL.g:2952:4: rule__OpMultiAssign__Group_6__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__OpMultiAssign__Group_6__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Alternatives"
+
+
+    // $ANTLR start "rule__OpEquality__Alternatives"
+    // InternalActionDSL.g:2960:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    public final void rule__OpEquality__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2964:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            int alt13=4;
+            switch ( input.LA(1) ) {
+            case 23:
+                {
+                alt13=1;
+                }
+                break;
+            case 24:
+                {
+                alt13=2;
+                }
+                break;
+            case 25:
+                {
+                alt13=3;
+                }
+                break;
+            case 26:
+                {
+                alt13=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 13, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt13) {
+                case 1 :
+                    // InternalActionDSL.g:2965:2: ( '==' )
+                    {
+                    // InternalActionDSL.g:2965:2: ( '==' )
+                    // InternalActionDSL.g:2966:3: '=='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,23,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2971:2: ( '!=' )
+                    {
+                    // InternalActionDSL.g:2971:2: ( '!=' )
+                    // InternalActionDSL.g:2972:3: '!='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+                    }
+                    match(input,24,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:2977:2: ( '===' )
+                    {
+                    // InternalActionDSL.g:2977:2: ( '===' )
+                    // InternalActionDSL.g:2978:3: '==='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+                    }
+                    match(input,25,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:2983:2: ( '!==' )
+                    {
+                    // InternalActionDSL.g:2983:2: ( '!==' )
+                    // InternalActionDSL.g:2984:3: '!=='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+                    }
+                    match(input,26,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpEquality__Alternatives"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Alternatives_1"
+    // InternalActionDSL.g:2993:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
+    public final void rule__XRelationalExpression__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:2997:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==107) ) {
+                alt14=1;
+            }
+            else if ( ((LA14_0>=27 && LA14_0<=29)) ) {
+                alt14=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 14, 0, input);
+
+                throw nvae;
+            }
+            switch (alt14) {
+                case 1 :
+                    // InternalActionDSL.g:2998:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    {
+                    // InternalActionDSL.g:2998:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalActionDSL.g:2999:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
+                    }
+                    // InternalActionDSL.g:3000:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalActionDSL.g:3000:4: rule__XRelationalExpression__Group_1_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XRelationalExpression__Group_1_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3004:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3004:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalActionDSL.g:3005:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
+                    }
+                    // InternalActionDSL.g:3006:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalActionDSL.g:3006:4: rule__XRelationalExpression__Group_1_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XRelationalExpression__Group_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Alternatives_1"
+
+
+    // $ANTLR start "rule__OpCompare__Alternatives"
+    // InternalActionDSL.g:3014:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    public final void rule__OpCompare__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3018:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            int alt15=4;
+            switch ( input.LA(1) ) {
+            case 27:
+                {
+                alt15=1;
+                }
+                break;
+            case 29:
+                {
+                int LA15_2 = input.LA(2);
+
+                if ( (LA15_2==13) ) {
+                    alt15=2;
+                }
+                else if ( (LA15_2==EOF||(LA15_2>=RULE_ID && LA15_2<=RULE_DECIMAL)||LA15_2==29||(LA15_2>=36 && LA15_2<=37)||LA15_2==42||(LA15_2>=47 && LA15_2<=52)||LA15_2==79||LA15_2==101||(LA15_2>=105 && LA15_2<=106)||LA15_2==109||LA15_2==111||(LA15_2>=115 && LA15_2<=123)||LA15_2==125||LA15_2==140) ) {
+                    alt15=4;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 15, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 28:
+                {
+                alt15=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt15) {
+                case 1 :
+                    // InternalActionDSL.g:3019:2: ( '>=' )
+                    {
+                    // InternalActionDSL.g:3019:2: ( '>=' )
+                    // InternalActionDSL.g:3020:3: '>='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,27,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3025:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3025:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalActionDSL.g:3026:3: ( rule__OpCompare__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGroup_1()); 
+                    }
+                    // InternalActionDSL.g:3027:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalActionDSL.g:3027:4: rule__OpCompare__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__OpCompare__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getGroup_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3031:2: ( '>' )
+                    {
+                    // InternalActionDSL.g:3031:2: ( '>' )
+                    // InternalActionDSL.g:3032:3: '>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+                    }
+                    match(input,28,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:3037:2: ( '<' )
+                    {
+                    // InternalActionDSL.g:3037:2: ( '<' )
+                    // InternalActionDSL.g:3038:3: '<'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+                    }
+                    match(input,29,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpCompare__Alternatives"
+
+
+    // $ANTLR start "rule__OpOther__Alternatives"
+    // InternalActionDSL.g:3047:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
+    public final void rule__OpOther__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3051:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            int alt16=9;
+            alt16 = dfa16.predict(input);
+            switch (alt16) {
+                case 1 :
+                    // InternalActionDSL.g:3052:2: ( '->' )
+                    {
+                    // InternalActionDSL.g:3052:2: ( '->' )
+                    // InternalActionDSL.g:3053:3: '->'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+                    }
+                    match(input,30,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3058:2: ( '..<' )
+                    {
+                    // InternalActionDSL.g:3058:2: ( '..<' )
+                    // InternalActionDSL.g:3059:3: '..<'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+                    }
+                    match(input,31,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3064:2: ( ( rule__OpOther__Group_2__0 ) )
+                    {
+                    // InternalActionDSL.g:3064:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalActionDSL.g:3065:3: ( rule__OpOther__Group_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_2()); 
+                    }
+                    // InternalActionDSL.g:3066:3: ( rule__OpOther__Group_2__0 )
+                    // InternalActionDSL.g:3066:4: rule__OpOther__Group_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__OpOther__Group_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getGroup_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:3070:2: ( '..' )
+                    {
+                    // InternalActionDSL.g:3070:2: ( '..' )
+                    // InternalActionDSL.g:3071:3: '..'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
+                    }
+                    match(input,32,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:3076:2: ( '=>' )
+                    {
+                    // InternalActionDSL.g:3076:2: ( '=>' )
+                    // InternalActionDSL.g:3077:3: '=>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
+                    }
+                    match(input,33,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalActionDSL.g:3082:2: ( ( rule__OpOther__Group_5__0 ) )
+                    {
+                    // InternalActionDSL.g:3082:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalActionDSL.g:3083:3: ( rule__OpOther__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_5()); 
+                    }
+                    // InternalActionDSL.g:3084:3: ( rule__OpOther__Group_5__0 )
+                    // InternalActionDSL.g:3084:4: rule__OpOther__Group_5__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__OpOther__Group_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getGroup_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalActionDSL.g:3088:2: ( ( rule__OpOther__Group_6__0 ) )
+                    {
+                    // InternalActionDSL.g:3088:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalActionDSL.g:3089:3: ( rule__OpOther__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_6()); 
+                    }
+                    // InternalActionDSL.g:3090:3: ( rule__OpOther__Group_6__0 )
+                    // InternalActionDSL.g:3090:4: rule__OpOther__Group_6__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__OpOther__Group_6__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getGroup_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalActionDSL.g:3094:2: ( '<>' )
+                    {
+                    // InternalActionDSL.g:3094:2: ( '<>' )
+                    // InternalActionDSL.g:3095:3: '<>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
+                    }
+                    match(input,34,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalActionDSL.g:3100:2: ( '?:' )
+                    {
+                    // InternalActionDSL.g:3100:2: ( '?:' )
+                    // InternalActionDSL.g:3101:3: '?:'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
+                    }
+                    match(input,35,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Alternatives"
+
+
+    // $ANTLR start "rule__OpOther__Alternatives_5_1"
+    // InternalActionDSL.g:3110:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
+    public final void rule__OpOther__Alternatives_5_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3114:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==28) ) {
+                int LA17_1 = input.LA(2);
+
+                if ( (LA17_1==28) ) {
+                    alt17=1;
+                }
+                else if ( (LA17_1==EOF||(LA17_1>=RULE_ID && LA17_1<=RULE_DECIMAL)||LA17_1==29||(LA17_1>=36 && LA17_1<=37)||LA17_1==42||(LA17_1>=47 && LA17_1<=52)||LA17_1==79||LA17_1==101||(LA17_1>=105 && LA17_1<=106)||LA17_1==109||LA17_1==111||(LA17_1>=115 && LA17_1<=123)||LA17_1==125||LA17_1==140) ) {
+                    alt17=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 17, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 17, 0, input);
+
+                throw nvae;
+            }
+            switch (alt17) {
+                case 1 :
+                    // InternalActionDSL.g:3115:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3115:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalActionDSL.g:3116:3: ( rule__OpOther__Group_5_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
+                    }
+                    // InternalActionDSL.g:3117:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalActionDSL.g:3117:4: rule__OpOther__Group_5_1_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__OpOther__Group_5_1_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3121:2: ( '>' )
+                    {
+                    // InternalActionDSL.g:3121:2: ( '>' )
+                    // InternalActionDSL.g:3122:3: '>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
+                    }
+                    match(input,28,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Alternatives_5_1"
+
+
+    // $ANTLR start "rule__OpOther__Alternatives_6_1"
+    // InternalActionDSL.g:3131:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
+    public final void rule__OpOther__Alternatives_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3135:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            int alt18=3;
+            int LA18_0 = input.LA(1);
+
+            if ( (LA18_0==29) ) {
+                int LA18_1 = input.LA(2);
+
+                if ( (synpred43_InternalActionDSL()) ) {
+                    alt18=1;
+                }
+                else if ( (synpred44_InternalActionDSL()) ) {
+                    alt18=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 18, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA18_0==33) ) {
+                alt18=3;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 18, 0, input);
+
+                throw nvae;
+            }
+            switch (alt18) {
+                case 1 :
+                    // InternalActionDSL.g:3136:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3136:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalActionDSL.g:3137:3: ( rule__OpOther__Group_6_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
+                    }
+                    // InternalActionDSL.g:3138:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalActionDSL.g:3138:4: rule__OpOther__Group_6_1_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__OpOther__Group_6_1_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3142:2: ( '<' )
+                    {
+                    // InternalActionDSL.g:3142:2: ( '<' )
+                    // InternalActionDSL.g:3143:3: '<'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+                    }
+                    match(input,29,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3148:2: ( '=>' )
+                    {
+                    // InternalActionDSL.g:3148:2: ( '=>' )
+                    // InternalActionDSL.g:3149:3: '=>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
+                    }
+                    match(input,33,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Alternatives_6_1"
+
+
+    // $ANTLR start "rule__OpAdd__Alternatives"
+    // InternalActionDSL.g:3158:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    public final void rule__OpAdd__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3162:1: ( ( '+' ) | ( '-' ) )
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==36) ) {
+                alt19=1;
+            }
+            else if ( (LA19_0==37) ) {
+                alt19=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 19, 0, input);
+
+                throw nvae;
+            }
+            switch (alt19) {
+                case 1 :
+                    // InternalActionDSL.g:3163:2: ( '+' )
+                    {
+                    // InternalActionDSL.g:3163:2: ( '+' )
+                    // InternalActionDSL.g:3164:3: '+'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
+                    }
+                    match(input,36,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3169:2: ( '-' )
+                    {
+                    // InternalActionDSL.g:3169:2: ( '-' )
+                    // InternalActionDSL.g:3170:3: '-'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
+                    }
+                    match(input,37,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpAdd__Alternatives"
+
+
+    // $ANTLR start "rule__OpMulti__Alternatives"
+    // InternalActionDSL.g:3179:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    public final void rule__OpMulti__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3183:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            int alt20=4;
+            switch ( input.LA(1) ) {
+            case 38:
+                {
+                alt20=1;
+                }
+                break;
+            case 39:
+                {
+                alt20=2;
+                }
+                break;
+            case 40:
+                {
+                alt20=3;
+                }
+                break;
+            case 41:
+                {
+                alt20=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 20, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt20) {
+                case 1 :
+                    // InternalActionDSL.g:3184:2: ( '*' )
+                    {
+                    // InternalActionDSL.g:3184:2: ( '*' )
+                    // InternalActionDSL.g:3185:3: '*'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
+                    }
+                    match(input,38,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3190:2: ( '**' )
+                    {
+                    // InternalActionDSL.g:3190:2: ( '**' )
+                    // InternalActionDSL.g:3191:3: '**'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
+                    }
+                    match(input,39,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3196:2: ( '/' )
+                    {
+                    // InternalActionDSL.g:3196:2: ( '/' )
+                    // InternalActionDSL.g:3197:3: '/'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
+                    }
+                    match(input,40,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:3202:2: ( '%' )
+                    {
+                    // InternalActionDSL.g:3202:2: ( '%' )
+                    // InternalActionDSL.g:3203:3: '%'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
+                    }
+                    match(input,41,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMulti__Alternatives"
+
+
+    // $ANTLR start "rule__XUnaryOperation__Alternatives"
+    // InternalActionDSL.g:3212:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3216:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( ((LA21_0>=36 && LA21_0<=37)||LA21_0==42) ) {
+                alt21=1;
+            }
+            else if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_DECIMAL)||LA21_0==29||(LA21_0>=47 && LA21_0<=52)||LA21_0==79||LA21_0==101||(LA21_0>=105 && LA21_0<=106)||LA21_0==109||LA21_0==111||(LA21_0>=115 && LA21_0<=123)||LA21_0==125||LA21_0==140) ) {
+                alt21=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 21, 0, input);
+
+                throw nvae;
+            }
+            switch (alt21) {
+                case 1 :
+                    // InternalActionDSL.g:3217:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3217:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalActionDSL.g:3218:3: ( rule__XUnaryOperation__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
+                    }
+                    // InternalActionDSL.g:3219:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalActionDSL.g:3219:4: rule__XUnaryOperation__Group_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XUnaryOperation__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3223:2: ( ruleXCastedExpression )
+                    {
+                    // InternalActionDSL.g:3223:2: ( ruleXCastedExpression )
+                    // InternalActionDSL.g:3224:3: ruleXCastedExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXCastedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XUnaryOperation__Alternatives"
+
+
+    // $ANTLR start "rule__OpUnary__Alternatives"
+    // InternalActionDSL.g:3233:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    public final void rule__OpUnary__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3237:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            int alt22=3;
+            switch ( input.LA(1) ) {
+            case 42:
+                {
+                alt22=1;
+                }
+                break;
+            case 37:
+                {
+                alt22=2;
+                }
+                break;
+            case 36:
+                {
+                alt22=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 22, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt22) {
+                case 1 :
+                    // InternalActionDSL.g:3238:2: ( '!' )
+                    {
+                    // InternalActionDSL.g:3238:2: ( '!' )
+                    // InternalActionDSL.g:3239:3: '!'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
+                    }
+                    match(input,42,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3244:2: ( '-' )
+                    {
+                    // InternalActionDSL.g:3244:2: ( '-' )
+                    // InternalActionDSL.g:3245:3: '-'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
+                    }
+                    match(input,37,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3250:2: ( '+' )
+                    {
+                    // InternalActionDSL.g:3250:2: ( '+' )
+                    // InternalActionDSL.g:3251:3: '+'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
+                    }
+                    match(input,36,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpUnary__Alternatives"
+
+
+    // $ANTLR start "rule__OpPostfix__Alternatives"
+    // InternalActionDSL.g:3260:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    public final void rule__OpPostfix__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3264:1: ( ( '++' ) | ( '--' ) )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==43) ) {
+                alt23=1;
+            }
+            else if ( (LA23_0==44) ) {
+                alt23=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 23, 0, input);
+
+                throw nvae;
+            }
+            switch (alt23) {
+                case 1 :
+                    // InternalActionDSL.g:3265:2: ( '++' )
+                    {
+                    // InternalActionDSL.g:3265:2: ( '++' )
+                    // InternalActionDSL.g:3266:3: '++'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
+                    }
+                    match(input,43,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3271:2: ( '--' )
+                    {
+                    // InternalActionDSL.g:3271:2: ( '--' )
+                    // InternalActionDSL.g:3272:3: '--'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
+                    }
+                    match(input,44,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpPostfix__Alternatives"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1"
+    // InternalActionDSL.g:3281:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
+    public final void rule__XMemberFeatureCall__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3285:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            int alt24=2;
+            alt24 = dfa24.predict(input);
+            switch (alt24) {
+                case 1 :
+                    // InternalActionDSL.g:3286:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3286:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalActionDSL.g:3287:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
+                    }
+                    // InternalActionDSL.g:3288:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalActionDSL.g:3288:4: rule__XMemberFeatureCall__Group_1_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__Group_1_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3292:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3292:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalActionDSL.g:3293:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
+                    }
+                    // InternalActionDSL.g:3294:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalActionDSL.g:3294:4: rule__XMemberFeatureCall__Group_1_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__Group_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Alternatives_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1"
+    // InternalActionDSL.g:3302:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
+    public final void rule__XMemberFeatureCall__Alternatives_1_0_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3306:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==45) ) {
+                alt25=1;
+            }
+            else if ( (LA25_0==136) ) {
+                alt25=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 25, 0, input);
+
+                throw nvae;
+            }
+            switch (alt25) {
+                case 1 :
+                    // InternalActionDSL.g:3307:2: ( '.' )
+                    {
+                    // InternalActionDSL.g:3307:2: ( '.' )
+                    // InternalActionDSL.g:3308:3: '.'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
+                    }
+                    match(input,45,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3313:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    {
+                    // InternalActionDSL.g:3313:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalActionDSL.g:3314:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
+                    }
+                    // InternalActionDSL.g:3315:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalActionDSL.g:3315:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1"
+    // InternalActionDSL.g:3323:1: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) );
+    public final void rule__XMemberFeatureCall__Alternatives_1_1_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3327:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
+            int alt26=3;
+            switch ( input.LA(1) ) {
+            case 45:
+                {
+                alt26=1;
+                }
+                break;
+            case 137:
+                {
+                alt26=2;
+                }
+                break;
+            case 136:
+                {
+                alt26=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 26, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt26) {
+                case 1 :
+                    // InternalActionDSL.g:3328:2: ( '.' )
+                    {
+                    // InternalActionDSL.g:3328:2: ( '.' )
+                    // InternalActionDSL.g:3329:3: '.'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); 
+                    }
+                    match(input,45,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3334:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    {
+                    // InternalActionDSL.g:3334:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalActionDSL.g:3335:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); 
+                    }
+                    // InternalActionDSL.g:3336:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalActionDSL.g:3336:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3340:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    {
+                    // InternalActionDSL.g:3340:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalActionDSL.g:3341:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); 
+                    }
+                    // InternalActionDSL.g:3342:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalActionDSL.g:3342:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_3_1"
+    // InternalActionDSL.g:3350:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );
+    public final void rule__XMemberFeatureCall__Alternatives_1_1_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3354:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
+            int alt27=2;
+            alt27 = dfa27.predict(input);
+            switch (alt27) {
+                case 1 :
+                    // InternalActionDSL.g:3355:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    {
+                    // InternalActionDSL.g:3355:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalActionDSL.g:3356:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
+                    }
+                    // InternalActionDSL.g:3357:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalActionDSL.g:3357:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3361:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3361:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalActionDSL.g:3362:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); 
+                    }
+                    // InternalActionDSL.g:3363:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalActionDSL.g:3363:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__Group_1_1_3_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Alternatives_1_1_3_1"
+
+
+    // $ANTLR start "rule__XPrimaryExpression__Alternatives"
+    // InternalActionDSL.g:3371:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
+    public final void rule__XPrimaryExpression__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3375:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
+            int alt28=15;
+            alt28 = dfa28.predict(input);
+            switch (alt28) {
+                case 1 :
+                    // InternalActionDSL.g:3376:2: ( ruleXConstructorCall )
+                    {
+                    // InternalActionDSL.g:3376:2: ( ruleXConstructorCall )
+                    // InternalActionDSL.g:3377:3: ruleXConstructorCall
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXConstructorCall();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3382:2: ( ruleXBlockExpression )
+                    {
+                    // InternalActionDSL.g:3382:2: ( ruleXBlockExpression )
+                    // InternalActionDSL.g:3383:3: ruleXBlockExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXBlockExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3388:2: ( ruleXSwitchExpression )
+                    {
+                    // InternalActionDSL.g:3388:2: ( ruleXSwitchExpression )
+                    // InternalActionDSL.g:3389:3: ruleXSwitchExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXSwitchExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:3394:2: ( ( ruleXSynchronizedExpression ) )
+                    {
+                    // InternalActionDSL.g:3394:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalActionDSL.g:3395:3: ( ruleXSynchronizedExpression )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+                    }
+                    // InternalActionDSL.g:3396:3: ( ruleXSynchronizedExpression )
+                    // InternalActionDSL.g:3396:4: ruleXSynchronizedExpression
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXSynchronizedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:3400:2: ( ruleXFeatureCall )
+                    {
+                    // InternalActionDSL.g:3400:2: ( ruleXFeatureCall )
+                    // InternalActionDSL.g:3401:3: ruleXFeatureCall
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXFeatureCall();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalActionDSL.g:3406:2: ( ruleXLiteral )
+                    {
+                    // InternalActionDSL.g:3406:2: ( ruleXLiteral )
+                    // InternalActionDSL.g:3407:3: ruleXLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalActionDSL.g:3412:2: ( ruleXIfExpression )
+                    {
+                    // InternalActionDSL.g:3412:2: ( ruleXIfExpression )
+                    // InternalActionDSL.g:3413:3: ruleXIfExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXIfExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalActionDSL.g:3418:2: ( ( ruleXForLoopExpression ) )
+                    {
+                    // InternalActionDSL.g:3418:2: ( ( ruleXForLoopExpression ) )
+                    // InternalActionDSL.g:3419:3: ( ruleXForLoopExpression )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+                    }
+                    // InternalActionDSL.g:3420:3: ( ruleXForLoopExpression )
+                    // InternalActionDSL.g:3420:4: ruleXForLoopExpression
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXForLoopExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalActionDSL.g:3424:2: ( ruleXBasicForLoopExpression )
+                    {
+                    // InternalActionDSL.g:3424:2: ( ruleXBasicForLoopExpression )
+                    // InternalActionDSL.g:3425:3: ruleXBasicForLoopExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXBasicForLoopExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // InternalActionDSL.g:3430:2: ( ruleXWhileExpression )
+                    {
+                    // InternalActionDSL.g:3430:2: ( ruleXWhileExpression )
+                    // InternalActionDSL.g:3431:3: ruleXWhileExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXWhileExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // InternalActionDSL.g:3436:2: ( ruleXDoWhileExpression )
+                    {
+                    // InternalActionDSL.g:3436:2: ( ruleXDoWhileExpression )
+                    // InternalActionDSL.g:3437:3: ruleXDoWhileExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXDoWhileExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // InternalActionDSL.g:3442:2: ( ruleXThrowExpression )
+                    {
+                    // InternalActionDSL.g:3442:2: ( ruleXThrowExpression )
+                    // InternalActionDSL.g:3443:3: ruleXThrowExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXThrowExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // InternalActionDSL.g:3448:2: ( ruleXReturnExpression )
+                    {
+                    // InternalActionDSL.g:3448:2: ( ruleXReturnExpression )
+                    // InternalActionDSL.g:3449:3: ruleXReturnExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXReturnExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // InternalActionDSL.g:3454:2: ( ruleXTryCatchFinallyExpression )
+                    {
+                    // InternalActionDSL.g:3454:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalActionDSL.g:3455:3: ruleXTryCatchFinallyExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXTryCatchFinallyExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 15 :
+                    // InternalActionDSL.g:3460:2: ( ruleXParenthesizedExpression )
+                    {
+                    // InternalActionDSL.g:3460:2: ( ruleXParenthesizedExpression )
+                    // InternalActionDSL.g:3461:3: ruleXParenthesizedExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXParenthesizedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPrimaryExpression__Alternatives"
+
+
+    // $ANTLR start "rule__XLiteral__Alternatives"
+    // InternalActionDSL.g:3470:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
+    public final void rule__XLiteral__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3474:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
+            int alt29=7;
+            switch ( input.LA(1) ) {
+            case 105:
+                {
+                alt29=1;
+                }
+                break;
+            case 106:
+                {
+                alt29=2;
+                }
+                break;
+            case 52:
+            case 140:
+                {
+                alt29=3;
+                }
+                break;
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+                {
+                alt29=4;
+                }
+                break;
+            case 119:
+                {
+                alt29=5;
+                }
+                break;
+            case RULE_STRING:
+                {
+                alt29=6;
+                }
+                break;
+            case 120:
+                {
+                alt29=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 29, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt29) {
+                case 1 :
+                    // InternalActionDSL.g:3475:2: ( ruleXCollectionLiteral )
+                    {
+                    // InternalActionDSL.g:3475:2: ( ruleXCollectionLiteral )
+                    // InternalActionDSL.g:3476:3: ruleXCollectionLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXCollectionLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3481:2: ( ( ruleXClosure ) )
+                    {
+                    // InternalActionDSL.g:3481:2: ( ( ruleXClosure ) )
+                    // InternalActionDSL.g:3482:3: ( ruleXClosure )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+                    }
+                    // InternalActionDSL.g:3483:3: ( ruleXClosure )
+                    // InternalActionDSL.g:3483:4: ruleXClosure
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXClosure();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3487:2: ( ruleXBooleanLiteral )
+                    {
+                    // InternalActionDSL.g:3487:2: ( ruleXBooleanLiteral )
+                    // InternalActionDSL.g:3488:3: ruleXBooleanLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXBooleanLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:3493:2: ( ruleXNumberLiteral )
+                    {
+                    // InternalActionDSL.g:3493:2: ( ruleXNumberLiteral )
+                    // InternalActionDSL.g:3494:3: ruleXNumberLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXNumberLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:3499:2: ( ruleXNullLiteral )
+                    {
+                    // InternalActionDSL.g:3499:2: ( ruleXNullLiteral )
+                    // InternalActionDSL.g:3500:3: ruleXNullLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXNullLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalActionDSL.g:3505:2: ( ruleXStringLiteral )
+                    {
+                    // InternalActionDSL.g:3505:2: ( ruleXStringLiteral )
+                    // InternalActionDSL.g:3506:3: ruleXStringLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXStringLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalActionDSL.g:3511:2: ( ruleXTypeLiteral )
+                    {
+                    // InternalActionDSL.g:3511:2: ( ruleXTypeLiteral )
+                    // InternalActionDSL.g:3512:3: ruleXTypeLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXTypeLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XLiteral__Alternatives"
+
+
+    // $ANTLR start "rule__XCollectionLiteral__Alternatives"
+    // InternalActionDSL.g:3521:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
+    public final void rule__XCollectionLiteral__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3525:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
+            int alt30=2;
+            int LA30_0 = input.LA(1);
+
+            if ( (LA30_0==105) ) {
+                int LA30_1 = input.LA(2);
+
+                if ( (LA30_1==79) ) {
+                    alt30=1;
+                }
+                else if ( (LA30_1==106) ) {
+                    alt30=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 30, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 30, 0, input);
+
+                throw nvae;
+            }
+            switch (alt30) {
+                case 1 :
+                    // InternalActionDSL.g:3526:2: ( ruleXSetLiteral )
+                    {
+                    // InternalActionDSL.g:3526:2: ( ruleXSetLiteral )
+                    // InternalActionDSL.g:3527:3: ruleXSetLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXSetLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3532:2: ( ruleXListLiteral )
+                    {
+                    // InternalActionDSL.g:3532:2: ( ruleXListLiteral )
+                    // InternalActionDSL.g:3533:3: ruleXListLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXListLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCollectionLiteral__Alternatives"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Alternatives_2"
+    // InternalActionDSL.g:3542:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
+    public final void rule__XSwitchExpression__Alternatives_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3546:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
+            int alt31=2;
+            alt31 = dfa31.predict(input);
+            switch (alt31) {
+                case 1 :
+                    // InternalActionDSL.g:3547:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3547:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalActionDSL.g:3548:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
+                    }
+                    // InternalActionDSL.g:3549:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalActionDSL.g:3549:4: rule__XSwitchExpression__Group_2_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XSwitchExpression__Group_2_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3553:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3553:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalActionDSL.g:3554:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
+                    }
+                    // InternalActionDSL.g:3555:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalActionDSL.g:3555:4: rule__XSwitchExpression__Group_2_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XSwitchExpression__Group_2_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Alternatives_2"
+
+
+    // $ANTLR start "rule__XCasePart__Alternatives_3"
+    // InternalActionDSL.g:3563:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
+    public final void rule__XCasePart__Alternatives_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3567:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==112) ) {
+                alt32=1;
+            }
+            else if ( (LA32_0==103) ) {
+                alt32=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 32, 0, input);
+
+                throw nvae;
+            }
+            switch (alt32) {
+                case 1 :
+                    // InternalActionDSL.g:3568:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3568:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalActionDSL.g:3569:3: ( rule__XCasePart__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
+                    }
+                    // InternalActionDSL.g:3570:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalActionDSL.g:3570:4: rule__XCasePart__Group_3_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XCasePart__Group_3_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3574:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    {
+                    // InternalActionDSL.g:3574:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalActionDSL.g:3575:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
+                    }
+                    // InternalActionDSL.g:3576:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalActionDSL.g:3576:4: rule__XCasePart__FallThroughAssignment_3_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XCasePart__FallThroughAssignment_3_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Alternatives_3"
+
+
+    // $ANTLR start "rule__XExpressionOrVarDeclaration__Alternatives"
+    // InternalActionDSL.g:3584:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
+    public final void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3588:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==46||LA33_0==139) ) {
+                alt33=1;
+            }
+            else if ( ((LA33_0>=RULE_ID && LA33_0<=RULE_DECIMAL)||LA33_0==29||(LA33_0>=36 && LA33_0<=37)||LA33_0==42||(LA33_0>=47 && LA33_0<=52)||LA33_0==79||LA33_0==101||(LA33_0>=105 && LA33_0<=106)||LA33_0==109||LA33_0==111||(LA33_0>=115 && LA33_0<=123)||LA33_0==125||LA33_0==140) ) {
+                alt33=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 33, 0, input);
+
+                throw nvae;
+            }
+            switch (alt33) {
+                case 1 :
+                    // InternalActionDSL.g:3589:2: ( ruleXVariableDeclaration )
+                    {
+                    // InternalActionDSL.g:3589:2: ( ruleXVariableDeclaration )
+                    // InternalActionDSL.g:3590:3: ruleXVariableDeclaration
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXVariableDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3595:2: ( ruleXExpression )
+                    {
+                    // InternalActionDSL.g:3595:2: ( ruleXExpression )
+                    // InternalActionDSL.g:3596:3: ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionOrVarDeclaration__Alternatives"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Alternatives_1"
+    // InternalActionDSL.g:3605:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
+    public final void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3609:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
+            int alt34=2;
+            int LA34_0 = input.LA(1);
+
+            if ( (LA34_0==139) ) {
+                alt34=1;
+            }
+            else if ( (LA34_0==46) ) {
+                alt34=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 34, 0, input);
+
+                throw nvae;
+            }
+            switch (alt34) {
+                case 1 :
+                    // InternalActionDSL.g:3610:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    {
+                    // InternalActionDSL.g:3610:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalActionDSL.g:3611:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
+                    }
+                    // InternalActionDSL.g:3612:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalActionDSL.g:3612:4: rule__XVariableDeclaration__WriteableAssignment_1_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XVariableDeclaration__WriteableAssignment_1_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3616:2: ( 'val' )
+                    {
+                    // InternalActionDSL.g:3616:2: ( 'val' )
+                    // InternalActionDSL.g:3617:3: 'val'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); 
+                    }
+                    match(input,46,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Alternatives_1"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Alternatives_2"
+    // InternalActionDSL.g:3626:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
+    public final void rule__XVariableDeclaration__Alternatives_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3630:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
+            int alt35=2;
+            int LA35_0 = input.LA(1);
+
+            if ( (LA35_0==RULE_ID) ) {
+                int LA35_1 = input.LA(2);
+
+                if ( (synpred83_InternalActionDSL()) ) {
+                    alt35=1;
+                }
+                else if ( (true) ) {
+                    alt35=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 35, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA35_0==33||LA35_0==101) ) {
+                alt35=1;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 35, 0, input);
+
+                throw nvae;
+            }
+            switch (alt35) {
+                case 1 :
+                    // InternalActionDSL.g:3631:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3631:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalActionDSL.g:3632:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
+                    }
+                    // InternalActionDSL.g:3633:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalActionDSL.g:3633:4: rule__XVariableDeclaration__Group_2_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XVariableDeclaration__Group_2_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3637:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    {
+                    // InternalActionDSL.g:3637:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalActionDSL.g:3638:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
+                    }
+                    // InternalActionDSL.g:3639:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalActionDSL.g:3639:4: rule__XVariableDeclaration__NameAssignment_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XVariableDeclaration__NameAssignment_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Alternatives_2"
+
+
+    // $ANTLR start "rule__XFeatureCall__Alternatives_3_1"
+    // InternalActionDSL.g:3647:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
+    public final void rule__XFeatureCall__Alternatives_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3651:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
+            int alt36=2;
+            alt36 = dfa36.predict(input);
+            switch (alt36) {
+                case 1 :
+                    // InternalActionDSL.g:3652:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    {
+                    // InternalActionDSL.g:3652:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalActionDSL.g:3653:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
+                    }
+                    // InternalActionDSL.g:3654:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalActionDSL.g:3654:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3658:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3658:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalActionDSL.g:3659:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
+                    }
+                    // InternalActionDSL.g:3660:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalActionDSL.g:3660:4: rule__XFeatureCall__Group_3_1_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XFeatureCall__Group_3_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Alternatives_3_1"
+
+
+    // $ANTLR start "rule__FeatureCallID__Alternatives"
+    // InternalActionDSL.g:3668:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
+    public final void rule__FeatureCallID__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3672:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
+            int alt37=5;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                alt37=1;
+                }
+                break;
+            case 47:
+                {
+                alt37=2;
+                }
+                break;
+            case 48:
+                {
+                alt37=3;
+                }
+                break;
+            case 49:
+                {
+                alt37=4;
+                }
+                break;
+            case 50:
+                {
+                alt37=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 37, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt37) {
+                case 1 :
+                    // InternalActionDSL.g:3673:2: ( ruleValidID )
+                    {
+                    // InternalActionDSL.g:3673:2: ( ruleValidID )
+                    // InternalActionDSL.g:3674:3: ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleValidID();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3679:2: ( 'extends' )
+                    {
+                    // InternalActionDSL.g:3679:2: ( 'extends' )
+                    // InternalActionDSL.g:3680:3: 'extends'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
+                    }
+                    match(input,47,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3685:2: ( 'static' )
+                    {
+                    // InternalActionDSL.g:3685:2: ( 'static' )
+                    // InternalActionDSL.g:3686:3: 'static'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
+                    }
+                    match(input,48,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:3691:2: ( 'import' )
+                    {
+                    // InternalActionDSL.g:3691:2: ( 'import' )
+                    // InternalActionDSL.g:3692:3: 'import'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
+                    }
+                    match(input,49,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:3697:2: ( 'extension' )
+                    {
+                    // InternalActionDSL.g:3697:2: ( 'extension' )
+                    // InternalActionDSL.g:3698:3: 'extension'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
+                    }
+                    match(input,50,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FeatureCallID__Alternatives"
+
+
+    // $ANTLR start "rule__IdOrSuper__Alternatives"
+    // InternalActionDSL.g:3707:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
+    public final void rule__IdOrSuper__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3711:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
+            int alt38=2;
+            int LA38_0 = input.LA(1);
+
+            if ( (LA38_0==RULE_ID||(LA38_0>=47 && LA38_0<=50)) ) {
+                alt38=1;
+            }
+            else if ( (LA38_0==51) ) {
+                alt38=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 38, 0, input);
+
+                throw nvae;
+            }
+            switch (alt38) {
+                case 1 :
+                    // InternalActionDSL.g:3712:2: ( ruleFeatureCallID )
+                    {
+                    // InternalActionDSL.g:3712:2: ( ruleFeatureCallID )
+                    // InternalActionDSL.g:3713:3: ruleFeatureCallID
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleFeatureCallID();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3718:2: ( 'super' )
+                    {
+                    // InternalActionDSL.g:3718:2: ( 'super' )
+                    // InternalActionDSL.g:3719:3: 'super'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
+                    }
+                    match(input,51,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IdOrSuper__Alternatives"
+
+
+    // $ANTLR start "rule__XConstructorCall__Alternatives_4_1"
+    // InternalActionDSL.g:3728:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
+    public final void rule__XConstructorCall__Alternatives_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3732:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
+            int alt39=2;
+            alt39 = dfa39.predict(input);
+            switch (alt39) {
+                case 1 :
+                    // InternalActionDSL.g:3733:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    {
+                    // InternalActionDSL.g:3733:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalActionDSL.g:3734:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
+                    }
+                    // InternalActionDSL.g:3735:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalActionDSL.g:3735:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XConstructorCall__ArgumentsAssignment_4_1_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3739:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3739:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalActionDSL.g:3740:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
+                    }
+                    // InternalActionDSL.g:3741:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalActionDSL.g:3741:4: rule__XConstructorCall__Group_4_1_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XConstructorCall__Group_4_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Alternatives_4_1"
+
+
+    // $ANTLR start "rule__XBooleanLiteral__Alternatives_1"
+    // InternalActionDSL.g:3749:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
+    public final void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3753:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
+            int alt40=2;
+            int LA40_0 = input.LA(1);
+
+            if ( (LA40_0==52) ) {
+                alt40=1;
+            }
+            else if ( (LA40_0==140) ) {
+                alt40=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 40, 0, input);
+
+                throw nvae;
+            }
+            switch (alt40) {
+                case 1 :
+                    // InternalActionDSL.g:3754:2: ( 'false' )
+                    {
+                    // InternalActionDSL.g:3754:2: ( 'false' )
+                    // InternalActionDSL.g:3755:3: 'false'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); 
+                    }
+                    match(input,52,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3760:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    {
+                    // InternalActionDSL.g:3760:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalActionDSL.g:3761:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
+                    }
+                    // InternalActionDSL.g:3762:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalActionDSL.g:3762:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XBooleanLiteral__IsTrueAssignment_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBooleanLiteral__Alternatives_1"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Alternatives_3"
+    // InternalActionDSL.g:3770:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
+    public final void rule__XTryCatchFinallyExpression__Alternatives_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3774:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==126) ) {
+                alt41=1;
+            }
+            else if ( (LA41_0==124) ) {
+                alt41=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 41, 0, input);
+
+                throw nvae;
+            }
+            switch (alt41) {
+                case 1 :
+                    // InternalActionDSL.g:3775:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3775:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalActionDSL.g:3776:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
+                    }
+                    // InternalActionDSL.g:3777:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalActionDSL.g:3777:4: rule__XTryCatchFinallyExpression__Group_3_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XTryCatchFinallyExpression__Group_3_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3781:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3781:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalActionDSL.g:3782:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
+                    }
+                    // InternalActionDSL.g:3783:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalActionDSL.g:3783:4: rule__XTryCatchFinallyExpression__Group_3_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XTryCatchFinallyExpression__Group_3_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Alternatives_3"
+
+
+    // $ANTLR start "rule__Number__Alternatives"
+    // InternalActionDSL.g:3791:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
+    public final void rule__Number__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3795:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
+            int alt42=2;
+            int LA42_0 = input.LA(1);
+
+            if ( (LA42_0==RULE_HEX) ) {
+                alt42=1;
+            }
+            else if ( ((LA42_0>=RULE_INT && LA42_0<=RULE_DECIMAL)) ) {
+                alt42=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 42, 0, input);
+
+                throw nvae;
+            }
+            switch (alt42) {
+                case 1 :
+                    // InternalActionDSL.g:3796:2: ( RULE_HEX )
+                    {
+                    // InternalActionDSL.g:3796:2: ( RULE_HEX )
+                    // InternalActionDSL.g:3797:3: RULE_HEX
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
+                    }
+                    match(input,RULE_HEX,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3802:2: ( ( rule__Number__Group_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3802:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalActionDSL.g:3803:3: ( rule__Number__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getNumberAccess().getGroup_1()); 
+                    }
+                    // InternalActionDSL.g:3804:3: ( rule__Number__Group_1__0 )
+                    // InternalActionDSL.g:3804:4: rule__Number__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Number__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getNumberAccess().getGroup_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Alternatives"
+
+
+    // $ANTLR start "rule__Number__Alternatives_1_0"
+    // InternalActionDSL.g:3812:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    public final void rule__Number__Alternatives_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3816:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt43=2;
+            int LA43_0 = input.LA(1);
+
+            if ( (LA43_0==RULE_INT) ) {
+                alt43=1;
+            }
+            else if ( (LA43_0==RULE_DECIMAL) ) {
+                alt43=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 43, 0, input);
+
+                throw nvae;
+            }
+            switch (alt43) {
+                case 1 :
+                    // InternalActionDSL.g:3817:2: ( RULE_INT )
+                    {
+                    // InternalActionDSL.g:3817:2: ( RULE_INT )
+                    // InternalActionDSL.g:3818:3: RULE_INT
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
+                    }
+                    match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3823:2: ( RULE_DECIMAL )
+                    {
+                    // InternalActionDSL.g:3823:2: ( RULE_DECIMAL )
+                    // InternalActionDSL.g:3824:3: RULE_DECIMAL
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
+                    }
+                    match(input,RULE_DECIMAL,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Alternatives_1_0"
+
+
+    // $ANTLR start "rule__Number__Alternatives_1_1_1"
+    // InternalActionDSL.g:3833:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    public final void rule__Number__Alternatives_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3837:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==RULE_INT) ) {
+                alt44=1;
+            }
+            else if ( (LA44_0==RULE_DECIMAL) ) {
+                alt44=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 44, 0, input);
+
+                throw nvae;
+            }
+            switch (alt44) {
+                case 1 :
+                    // InternalActionDSL.g:3838:2: ( RULE_INT )
+                    {
+                    // InternalActionDSL.g:3838:2: ( RULE_INT )
+                    // InternalActionDSL.g:3839:3: RULE_INT
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
+                    }
+                    match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3844:2: ( RULE_DECIMAL )
+                    {
+                    // InternalActionDSL.g:3844:2: ( RULE_DECIMAL )
+                    // InternalActionDSL.g:3845:3: RULE_DECIMAL
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
+                    }
+                    match(input,RULE_DECIMAL,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Alternatives_1_1_1"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Alternatives"
+    // InternalActionDSL.g:3854:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
+    public final void rule__JvmTypeReference__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3858:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( (LA45_0==RULE_ID) ) {
+                alt45=1;
+            }
+            else if ( (LA45_0==33||LA45_0==101) ) {
+                alt45=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 45, 0, input);
+
+                throw nvae;
+            }
+            switch (alt45) {
+                case 1 :
+                    // InternalActionDSL.g:3859:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3859:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalActionDSL.g:3860:3: ( rule__JvmTypeReference__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
+                    }
+                    // InternalActionDSL.g:3861:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalActionDSL.g:3861:4: rule__JvmTypeReference__Group_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__JvmTypeReference__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3865:2: ( ruleXFunctionTypeRef )
+                    {
+                    // InternalActionDSL.g:3865:2: ( ruleXFunctionTypeRef )
+                    // InternalActionDSL.g:3866:3: ruleXFunctionTypeRef
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleXFunctionTypeRef();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Alternatives"
+
+
+    // $ANTLR start "rule__JvmArgumentTypeReference__Alternatives"
+    // InternalActionDSL.g:3875:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
+    public final void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3879:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
+            int alt46=2;
+            int LA46_0 = input.LA(1);
+
+            if ( (LA46_0==RULE_ID||LA46_0==33||LA46_0==101) ) {
+                alt46=1;
+            }
+            else if ( (LA46_0==127) ) {
+                alt46=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 46, 0, input);
+
+                throw nvae;
+            }
+            switch (alt46) {
+                case 1 :
+                    // InternalActionDSL.g:3880:2: ( ruleJvmTypeReference )
+                    {
+                    // InternalActionDSL.g:3880:2: ( ruleJvmTypeReference )
+                    // InternalActionDSL.g:3881:3: ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3886:2: ( ruleJvmWildcardTypeReference )
+                    {
+                    // InternalActionDSL.g:3886:2: ( ruleJvmWildcardTypeReference )
+                    // InternalActionDSL.g:3887:3: ruleJvmWildcardTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleJvmWildcardTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmArgumentTypeReference__Alternatives"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Alternatives_2"
+    // InternalActionDSL.g:3896:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
+    public final void rule__JvmWildcardTypeReference__Alternatives_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3900:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
+
+            if ( (LA47_0==47) ) {
+                alt47=1;
+            }
+            else if ( (LA47_0==51) ) {
+                alt47=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 47, 0, input);
+
+                throw nvae;
+            }
+            switch (alt47) {
+                case 1 :
+                    // InternalActionDSL.g:3901:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    {
+                    // InternalActionDSL.g:3901:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalActionDSL.g:3902:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
+                    }
+                    // InternalActionDSL.g:3903:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalActionDSL.g:3903:4: rule__JvmWildcardTypeReference__Group_2_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__JvmWildcardTypeReference__Group_2_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3907:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    {
+                    // InternalActionDSL.g:3907:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalActionDSL.g:3908:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
+                    }
+                    // InternalActionDSL.g:3909:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalActionDSL.g:3909:4: rule__JvmWildcardTypeReference__Group_2_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__JvmWildcardTypeReference__Group_2_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Alternatives_2"
+
+
+    // $ANTLR start "rule__TaskActionEnum__Alternatives"
+    // InternalActionDSL.g:3917:1: rule__TaskActionEnum__Alternatives : ( ( ( 'Claim' ) ) | ( ( 'Start' ) ) | ( ( 'Stop' ) ) | ( ( 'Release' ) ) | ( ( 'Suspend' ) ) | ( ( 'Resume' ) ) | ( ( 'Skip' ) ) | ( ( 'Complete' ) ) | ( ( 'Delegate' ) ) | ( ( 'Forward' ) ) | ( ( 'Fail' ) ) | ( ( 'Register' ) ) | ( ( 'Remove' ) ) | ( ( 'Activate' ) ) | ( ( 'Exit' ) ) );
+    public final void rule__TaskActionEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:3921:1: ( ( ( 'Claim' ) ) | ( ( 'Start' ) ) | ( ( 'Stop' ) ) | ( ( 'Release' ) ) | ( ( 'Suspend' ) ) | ( ( 'Resume' ) ) | ( ( 'Skip' ) ) | ( ( 'Complete' ) ) | ( ( 'Delegate' ) ) | ( ( 'Forward' ) ) | ( ( 'Fail' ) ) | ( ( 'Register' ) ) | ( ( 'Remove' ) ) | ( ( 'Activate' ) ) | ( ( 'Exit' ) ) )
+            int alt48=15;
+            switch ( input.LA(1) ) {
+            case 53:
+                {
+                alt48=1;
+                }
+                break;
+            case 17:
+                {
+                alt48=2;
+                }
+                break;
+            case 54:
+                {
+                alt48=3;
+                }
+                break;
+            case 55:
+                {
+                alt48=4;
+                }
+                break;
+            case 56:
+                {
+                alt48=5;
+                }
+                break;
+            case 57:
+                {
+                alt48=6;
+                }
+                break;
+            case 58:
+                {
+                alt48=7;
+                }
+                break;
+            case 59:
+                {
+                alt48=8;
+                }
+                break;
+            case 60:
+                {
+                alt48=9;
+                }
+                break;
+            case 61:
+                {
+                alt48=10;
+                }
+                break;
+            case 62:
+                {
+                alt48=11;
+                }
+                break;
+            case 63:
+                {
+                alt48=12;
+                }
+                break;
+            case 64:
+                {
+                alt48=13;
+                }
+                break;
+            case 65:
+                {
+                alt48=14;
+                }
+                break;
+            case 66:
+                {
+                alt48=15;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 48, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt48) {
+                case 1 :
+                    // InternalActionDSL.g:3922:2: ( ( 'Claim' ) )
+                    {
+                    // InternalActionDSL.g:3922:2: ( ( 'Claim' ) )
+                    // InternalActionDSL.g:3923:3: ( 'Claim' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalActionDSL.g:3924:3: ( 'Claim' )
+                    // InternalActionDSL.g:3924:4: 'Claim'
+                    {
+                    match(input,53,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:3928:2: ( ( 'Start' ) )
+                    {
+                    // InternalActionDSL.g:3928:2: ( ( 'Start' ) )
+                    // InternalActionDSL.g:3929:3: ( 'Start' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalActionDSL.g:3930:3: ( 'Start' )
+                    // InternalActionDSL.g:3930:4: 'Start'
+                    {
+                    match(input,17,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:3934:2: ( ( 'Stop' ) )
+                    {
+                    // InternalActionDSL.g:3934:2: ( ( 'Stop' ) )
+                    // InternalActionDSL.g:3935:3: ( 'Stop' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2()); 
+                    }
+                    // InternalActionDSL.g:3936:3: ( 'Stop' )
+                    // InternalActionDSL.g:3936:4: 'Stop'
+                    {
+                    match(input,54,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:3940:2: ( ( 'Release' ) )
+                    {
+                    // InternalActionDSL.g:3940:2: ( ( 'Release' ) )
+                    // InternalActionDSL.g:3941:3: ( 'Release' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3()); 
+                    }
+                    // InternalActionDSL.g:3942:3: ( 'Release' )
+                    // InternalActionDSL.g:3942:4: 'Release'
+                    {
+                    match(input,55,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:3946:2: ( ( 'Suspend' ) )
+                    {
+                    // InternalActionDSL.g:3946:2: ( ( 'Suspend' ) )
+                    // InternalActionDSL.g:3947:3: ( 'Suspend' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4()); 
+                    }
+                    // InternalActionDSL.g:3948:3: ( 'Suspend' )
+                    // InternalActionDSL.g:3948:4: 'Suspend'
+                    {
+                    match(input,56,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalActionDSL.g:3952:2: ( ( 'Resume' ) )
+                    {
+                    // InternalActionDSL.g:3952:2: ( ( 'Resume' ) )
+                    // InternalActionDSL.g:3953:3: ( 'Resume' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5()); 
+                    }
+                    // InternalActionDSL.g:3954:3: ( 'Resume' )
+                    // InternalActionDSL.g:3954:4: 'Resume'
+                    {
+                    match(input,57,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalActionDSL.g:3958:2: ( ( 'Skip' ) )
+                    {
+                    // InternalActionDSL.g:3958:2: ( ( 'Skip' ) )
+                    // InternalActionDSL.g:3959:3: ( 'Skip' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6()); 
+                    }
+                    // InternalActionDSL.g:3960:3: ( 'Skip' )
+                    // InternalActionDSL.g:3960:4: 'Skip'
+                    {
+                    match(input,58,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalActionDSL.g:3964:2: ( ( 'Complete' ) )
+                    {
+                    // InternalActionDSL.g:3964:2: ( ( 'Complete' ) )
+                    // InternalActionDSL.g:3965:3: ( 'Complete' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7()); 
+                    }
+                    // InternalActionDSL.g:3966:3: ( 'Complete' )
+                    // InternalActionDSL.g:3966:4: 'Complete'
+                    {
+                    match(input,59,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalActionDSL.g:3970:2: ( ( 'Delegate' ) )
+                    {
+                    // InternalActionDSL.g:3970:2: ( ( 'Delegate' ) )
+                    // InternalActionDSL.g:3971:3: ( 'Delegate' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8()); 
+                    }
+                    // InternalActionDSL.g:3972:3: ( 'Delegate' )
+                    // InternalActionDSL.g:3972:4: 'Delegate'
+                    {
+                    match(input,60,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // InternalActionDSL.g:3976:2: ( ( 'Forward' ) )
+                    {
+                    // InternalActionDSL.g:3976:2: ( ( 'Forward' ) )
+                    // InternalActionDSL.g:3977:3: ( 'Forward' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9()); 
+                    }
+                    // InternalActionDSL.g:3978:3: ( 'Forward' )
+                    // InternalActionDSL.g:3978:4: 'Forward'
+                    {
+                    match(input,61,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // InternalActionDSL.g:3982:2: ( ( 'Fail' ) )
+                    {
+                    // InternalActionDSL.g:3982:2: ( ( 'Fail' ) )
+                    // InternalActionDSL.g:3983:3: ( 'Fail' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10()); 
+                    }
+                    // InternalActionDSL.g:3984:3: ( 'Fail' )
+                    // InternalActionDSL.g:3984:4: 'Fail'
+                    {
+                    match(input,62,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // InternalActionDSL.g:3988:2: ( ( 'Register' ) )
+                    {
+                    // InternalActionDSL.g:3988:2: ( ( 'Register' ) )
+                    // InternalActionDSL.g:3989:3: ( 'Register' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11()); 
+                    }
+                    // InternalActionDSL.g:3990:3: ( 'Register' )
+                    // InternalActionDSL.g:3990:4: 'Register'
+                    {
+                    match(input,63,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // InternalActionDSL.g:3994:2: ( ( 'Remove' ) )
+                    {
+                    // InternalActionDSL.g:3994:2: ( ( 'Remove' ) )
+                    // InternalActionDSL.g:3995:3: ( 'Remove' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12()); 
+                    }
+                    // InternalActionDSL.g:3996:3: ( 'Remove' )
+                    // InternalActionDSL.g:3996:4: 'Remove'
+                    {
+                    match(input,64,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // InternalActionDSL.g:4000:2: ( ( 'Activate' ) )
+                    {
+                    // InternalActionDSL.g:4000:2: ( ( 'Activate' ) )
+                    // InternalActionDSL.g:4001:3: ( 'Activate' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13()); 
+                    }
+                    // InternalActionDSL.g:4002:3: ( 'Activate' )
+                    // InternalActionDSL.g:4002:4: 'Activate'
+                    {
+                    match(input,65,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 15 :
+                    // InternalActionDSL.g:4006:2: ( ( 'Exit' ) )
+                    {
+                    // InternalActionDSL.g:4006:2: ( ( 'Exit' ) )
+                    // InternalActionDSL.g:4007:3: ( 'Exit' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14()); 
+                    }
+                    // InternalActionDSL.g:4008:3: ( 'Exit' )
+                    // InternalActionDSL.g:4008:4: 'Exit'
+                    {
+                    match(input,66,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TaskActionEnum__Alternatives"
+
+
+    // $ANTLR start "rule__SelectWorkloadActionEnum__Alternatives"
+    // InternalActionDSL.g:4016:1: rule__SelectWorkloadActionEnum__Alternatives : ( ( ( 'RemoveAll' ) ) | ( ( 'AddAll' ) ) );
+    public final void rule__SelectWorkloadActionEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4020:1: ( ( ( 'RemoveAll' ) ) | ( ( 'AddAll' ) ) )
+            int alt49=2;
+            int LA49_0 = input.LA(1);
+
+            if ( (LA49_0==67) ) {
+                alt49=1;
+            }
+            else if ( (LA49_0==68) ) {
+                alt49=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 49, 0, input);
+
+                throw nvae;
+            }
+            switch (alt49) {
+                case 1 :
+                    // InternalActionDSL.g:4021:2: ( ( 'RemoveAll' ) )
+                    {
+                    // InternalActionDSL.g:4021:2: ( ( 'RemoveAll' ) )
+                    // InternalActionDSL.g:4022:3: ( 'RemoveAll' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalActionDSL.g:4023:3: ( 'RemoveAll' )
+                    // InternalActionDSL.g:4023:4: 'RemoveAll'
+                    {
+                    match(input,67,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:4027:2: ( ( 'AddAll' ) )
+                    {
+                    // InternalActionDSL.g:4027:2: ( ( 'AddAll' ) )
+                    // InternalActionDSL.g:4028:3: ( 'AddAll' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalActionDSL.g:4029:3: ( 'AddAll' )
+                    // InternalActionDSL.g:4029:4: 'AddAll'
+                    {
+                    match(input,68,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SelectWorkloadActionEnum__Alternatives"
+
+
+    // $ANTLR start "rule__DialogActionEnum__Alternatives"
+    // InternalActionDSL.g:4037:1: rule__DialogActionEnum__Alternatives : ( ( ( 'New' ) ) | ( ( 'Save' ) ) | ( ( 'Delete' ) ) | ( ( 'Cancel' ) ) );
+    public final void rule__DialogActionEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4041:1: ( ( ( 'New' ) ) | ( ( 'Save' ) ) | ( ( 'Delete' ) ) | ( ( 'Cancel' ) ) )
+            int alt50=4;
+            switch ( input.LA(1) ) {
+            case 69:
+                {
+                alt50=1;
+                }
+                break;
+            case 70:
+                {
+                alt50=2;
+                }
+                break;
+            case 71:
+                {
+                alt50=3;
+                }
+                break;
+            case 72:
+                {
+                alt50=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 50, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt50) {
+                case 1 :
+                    // InternalActionDSL.g:4042:2: ( ( 'New' ) )
+                    {
+                    // InternalActionDSL.g:4042:2: ( ( 'New' ) )
+                    // InternalActionDSL.g:4043:3: ( 'New' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalActionDSL.g:4044:3: ( 'New' )
+                    // InternalActionDSL.g:4044:4: 'New'
+                    {
+                    match(input,69,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:4048:2: ( ( 'Save' ) )
+                    {
+                    // InternalActionDSL.g:4048:2: ( ( 'Save' ) )
+                    // InternalActionDSL.g:4049:3: ( 'Save' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalActionDSL.g:4050:3: ( 'Save' )
+                    // InternalActionDSL.g:4050:4: 'Save'
+                    {
+                    match(input,70,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:4054:2: ( ( 'Delete' ) )
+                    {
+                    // InternalActionDSL.g:4054:2: ( ( 'Delete' ) )
+                    // InternalActionDSL.g:4055:3: ( 'Delete' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2()); 
+                    }
+                    // InternalActionDSL.g:4056:3: ( 'Delete' )
+                    // InternalActionDSL.g:4056:4: 'Delete'
+                    {
+                    match(input,71,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:4060:2: ( ( 'Cancel' ) )
+                    {
+                    // InternalActionDSL.g:4060:2: ( ( 'Cancel' ) )
+                    // InternalActionDSL.g:4061:3: ( 'Cancel' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3()); 
+                    }
+                    // InternalActionDSL.g:4062:3: ( 'Cancel' )
+                    // InternalActionDSL.g:4062:4: 'Cancel'
+                    {
+                    match(input,72,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DialogActionEnum__Alternatives"
+
+
+    // $ANTLR start "rule__ReportActionEnum__Alternatives"
+    // InternalActionDSL.g:4070:1: rule__ReportActionEnum__Alternatives : ( ( ( 'PrintOnServer' ) ) | ( ( 'Download' ) ) );
+    public final void rule__ReportActionEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4074:1: ( ( ( 'PrintOnServer' ) ) | ( ( 'Download' ) ) )
+            int alt51=2;
+            int LA51_0 = input.LA(1);
+
+            if ( (LA51_0==73) ) {
+                alt51=1;
+            }
+            else if ( (LA51_0==16) ) {
+                alt51=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 51, 0, input);
+
+                throw nvae;
+            }
+            switch (alt51) {
+                case 1 :
+                    // InternalActionDSL.g:4075:2: ( ( 'PrintOnServer' ) )
+                    {
+                    // InternalActionDSL.g:4075:2: ( ( 'PrintOnServer' ) )
+                    // InternalActionDSL.g:4076:3: ( 'PrintOnServer' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalActionDSL.g:4077:3: ( 'PrintOnServer' )
+                    // InternalActionDSL.g:4077:4: 'PrintOnServer'
+                    {
+                    match(input,73,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:4081:2: ( ( 'Download' ) )
+                    {
+                    // InternalActionDSL.g:4081:2: ( ( 'Download' ) )
+                    // InternalActionDSL.g:4082:3: ( 'Download' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalActionDSL.g:4083:3: ( 'Download' )
+                    // InternalActionDSL.g:4083:4: 'Download'
+                    {
+                    match(input,16,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ReportActionEnum__Alternatives"
+
+
+    // $ANTLR start "rule__DatainterchangeActionEnum__Alternatives"
+    // InternalActionDSL.g:4091:1: rule__DatainterchangeActionEnum__Alternatives : ( ( ( 'Import' ) ) | ( ( 'Export' ) ) );
+    public final void rule__DatainterchangeActionEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4095:1: ( ( ( 'Import' ) ) | ( ( 'Export' ) ) )
+            int alt52=2;
+            int LA52_0 = input.LA(1);
+
+            if ( (LA52_0==74) ) {
+                alt52=1;
+            }
+            else if ( (LA52_0==75) ) {
+                alt52=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 52, 0, input);
+
+                throw nvae;
+            }
+            switch (alt52) {
+                case 1 :
+                    // InternalActionDSL.g:4096:2: ( ( 'Import' ) )
+                    {
+                    // InternalActionDSL.g:4096:2: ( ( 'Import' ) )
+                    // InternalActionDSL.g:4097:3: ( 'Import' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalActionDSL.g:4098:3: ( 'Import' )
+                    // InternalActionDSL.g:4098:4: 'Import'
+                    {
+                    match(input,74,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:4102:2: ( ( 'Export' ) )
+                    {
+                    // InternalActionDSL.g:4102:2: ( ( 'Export' ) )
+                    // InternalActionDSL.g:4103:3: ( 'Export' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalActionDSL.g:4104:3: ( 'Export' )
+                    // InternalActionDSL.g:4104:4: 'Export'
+                    {
+                    match(input,75,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DatainterchangeActionEnum__Alternatives"
+
+
+    // $ANTLR start "rule__UIActionEnum__Alternatives"
+    // InternalActionDSL.g:4112:1: rule__UIActionEnum__Alternatives : ( ( ( 'NextPart' ) ) | ( ( 'PreviousPart' ) ) );
+    public final void rule__UIActionEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4116:1: ( ( ( 'NextPart' ) ) | ( ( 'PreviousPart' ) ) )
+            int alt53=2;
+            int LA53_0 = input.LA(1);
+
+            if ( (LA53_0==76) ) {
+                alt53=1;
+            }
+            else if ( (LA53_0==77) ) {
+                alt53=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 53, 0, input);
+
+                throw nvae;
+            }
+            switch (alt53) {
+                case 1 :
+                    // InternalActionDSL.g:4117:2: ( ( 'NextPart' ) )
+                    {
+                    // InternalActionDSL.g:4117:2: ( ( 'NextPart' ) )
+                    // InternalActionDSL.g:4118:3: ( 'NextPart' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getUIActionEnumAccess().getNEXT_PARTEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalActionDSL.g:4119:3: ( 'NextPart' )
+                    // InternalActionDSL.g:4119:4: 'NextPart'
+                    {
+                    match(input,76,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getUIActionEnumAccess().getNEXT_PARTEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:4123:2: ( ( 'PreviousPart' ) )
+                    {
+                    // InternalActionDSL.g:4123:2: ( ( 'PreviousPart' ) )
+                    // InternalActionDSL.g:4124:3: ( 'PreviousPart' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getUIActionEnumAccess().getPREVIOUS_PARTEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalActionDSL.g:4125:3: ( 'PreviousPart' )
+                    // InternalActionDSL.g:4125:4: 'PreviousPart'
+                    {
+                    match(input,77,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getUIActionEnumAccess().getPREVIOUS_PARTEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__UIActionEnum__Alternatives"
+
+
+    // $ANTLR start "rule__ActionModel__Group__0"
+    // InternalActionDSL.g:4133:1: rule__ActionModel__Group__0 : rule__ActionModel__Group__0__Impl rule__ActionModel__Group__1 ;
+    public final void rule__ActionModel__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4137:1: ( rule__ActionModel__Group__0__Impl rule__ActionModel__Group__1 )
+            // InternalActionDSL.g:4138:2: rule__ActionModel__Group__0__Impl rule__ActionModel__Group__1
+            {
+            pushFollow(FOLLOW_5);
+            rule__ActionModel__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionModel__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionModel__Group__0"
+
+
+    // $ANTLR start "rule__ActionModel__Group__0__Impl"
+    // InternalActionDSL.g:4145:1: rule__ActionModel__Group__0__Impl : ( ( rule__ActionModel__ImportSectionAssignment_0 )? ) ;
+    public final void rule__ActionModel__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4149:1: ( ( ( rule__ActionModel__ImportSectionAssignment_0 )? ) )
+            // InternalActionDSL.g:4150:1: ( ( rule__ActionModel__ImportSectionAssignment_0 )? )
+            {
+            // InternalActionDSL.g:4150:1: ( ( rule__ActionModel__ImportSectionAssignment_0 )? )
+            // InternalActionDSL.g:4151:2: ( rule__ActionModel__ImportSectionAssignment_0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionModelAccess().getImportSectionAssignment_0()); 
+            }
+            // InternalActionDSL.g:4152:2: ( rule__ActionModel__ImportSectionAssignment_0 )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
+
+            if ( (LA54_0==49) ) {
+                alt54=1;
+            }
+            switch (alt54) {
+                case 1 :
+                    // InternalActionDSL.g:4152:3: rule__ActionModel__ImportSectionAssignment_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionModel__ImportSectionAssignment_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionModelAccess().getImportSectionAssignment_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionModel__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionModel__Group__1"
+    // InternalActionDSL.g:4160:1: rule__ActionModel__Group__1 : rule__ActionModel__Group__1__Impl ;
+    public final void rule__ActionModel__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4164:1: ( rule__ActionModel__Group__1__Impl )
+            // InternalActionDSL.g:4165:2: rule__ActionModel__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionModel__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionModel__Group__1"
+
+
+    // $ANTLR start "rule__ActionModel__Group__1__Impl"
+    // InternalActionDSL.g:4171:1: rule__ActionModel__Group__1__Impl : ( ( rule__ActionModel__PackagesAssignment_1 )* ) ;
+    public final void rule__ActionModel__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4175:1: ( ( ( rule__ActionModel__PackagesAssignment_1 )* ) )
+            // InternalActionDSL.g:4176:1: ( ( rule__ActionModel__PackagesAssignment_1 )* )
+            {
+            // InternalActionDSL.g:4176:1: ( ( rule__ActionModel__PackagesAssignment_1 )* )
+            // InternalActionDSL.g:4177:2: ( rule__ActionModel__PackagesAssignment_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionModelAccess().getPackagesAssignment_1()); 
+            }
+            // InternalActionDSL.g:4178:2: ( rule__ActionModel__PackagesAssignment_1 )*
+            loop55:
+            do {
+                int alt55=2;
+                int LA55_0 = input.LA(1);
+
+                if ( (LA55_0==78) ) {
+                    alt55=1;
+                }
+
+
+                switch (alt55) {
+            	case 1 :
+            	    // InternalActionDSL.g:4178:3: rule__ActionModel__PackagesAssignment_1
+            	    {
+            	    pushFollow(FOLLOW_6);
+            	    rule__ActionModel__PackagesAssignment_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop55;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionModelAccess().getPackagesAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionModel__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionPackage__Group__0"
+    // InternalActionDSL.g:4187:1: rule__ActionPackage__Group__0 : rule__ActionPackage__Group__0__Impl rule__ActionPackage__Group__1 ;
+    public final void rule__ActionPackage__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4191:1: ( rule__ActionPackage__Group__0__Impl rule__ActionPackage__Group__1 )
+            // InternalActionDSL.g:4192:2: rule__ActionPackage__Group__0__Impl rule__ActionPackage__Group__1
+            {
+            pushFollow(FOLLOW_5);
+            rule__ActionPackage__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group__0"
+
+
+    // $ANTLR start "rule__ActionPackage__Group__0__Impl"
+    // InternalActionDSL.g:4199:1: rule__ActionPackage__Group__0__Impl : ( () ) ;
+    public final void rule__ActionPackage__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4203:1: ( ( () ) )
+            // InternalActionDSL.g:4204:1: ( () )
+            {
+            // InternalActionDSL.g:4204:1: ( () )
+            // InternalActionDSL.g:4205:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getActionPackageAction_0()); 
+            }
+            // InternalActionDSL.g:4206:2: ()
+            // InternalActionDSL.g:4206:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getActionPackageAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionPackage__Group__1"
+    // InternalActionDSL.g:4214:1: rule__ActionPackage__Group__1 : rule__ActionPackage__Group__1__Impl rule__ActionPackage__Group__2 ;
+    public final void rule__ActionPackage__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4218:1: ( rule__ActionPackage__Group__1__Impl rule__ActionPackage__Group__2 )
+            // InternalActionDSL.g:4219:2: rule__ActionPackage__Group__1__Impl rule__ActionPackage__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionPackage__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group__1"
+
+
+    // $ANTLR start "rule__ActionPackage__Group__1__Impl"
+    // InternalActionDSL.g:4226:1: rule__ActionPackage__Group__1__Impl : ( 'package' ) ;
+    public final void rule__ActionPackage__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4230:1: ( ( 'package' ) )
+            // InternalActionDSL.g:4231:1: ( 'package' )
+            {
+            // InternalActionDSL.g:4231:1: ( 'package' )
+            // InternalActionDSL.g:4232:2: 'package'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getPackageKeyword_1()); 
+            }
+            match(input,78,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getPackageKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionPackage__Group__2"
+    // InternalActionDSL.g:4241:1: rule__ActionPackage__Group__2 : rule__ActionPackage__Group__2__Impl rule__ActionPackage__Group__3 ;
+    public final void rule__ActionPackage__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4245:1: ( rule__ActionPackage__Group__2__Impl rule__ActionPackage__Group__3 )
+            // InternalActionDSL.g:4246:2: rule__ActionPackage__Group__2__Impl rule__ActionPackage__Group__3
+            {
+            pushFollow(FOLLOW_8);
+            rule__ActionPackage__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group__2"
+
+
+    // $ANTLR start "rule__ActionPackage__Group__2__Impl"
+    // InternalActionDSL.g:4253:1: rule__ActionPackage__Group__2__Impl : ( ( rule__ActionPackage__NameAssignment_2 ) ) ;
+    public final void rule__ActionPackage__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4257:1: ( ( ( rule__ActionPackage__NameAssignment_2 ) ) )
+            // InternalActionDSL.g:4258:1: ( ( rule__ActionPackage__NameAssignment_2 ) )
+            {
+            // InternalActionDSL.g:4258:1: ( ( rule__ActionPackage__NameAssignment_2 ) )
+            // InternalActionDSL.g:4259:2: ( rule__ActionPackage__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getNameAssignment_2()); 
+            }
+            // InternalActionDSL.g:4260:2: ( rule__ActionPackage__NameAssignment_2 )
+            // InternalActionDSL.g:4260:3: rule__ActionPackage__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ActionPackage__Group__3"
+    // InternalActionDSL.g:4268:1: rule__ActionPackage__Group__3 : rule__ActionPackage__Group__3__Impl ;
+    public final void rule__ActionPackage__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4272:1: ( rule__ActionPackage__Group__3__Impl )
+            // InternalActionDSL.g:4273:2: rule__ActionPackage__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group__3"
+
+
+    // $ANTLR start "rule__ActionPackage__Group__3__Impl"
+    // InternalActionDSL.g:4279:1: rule__ActionPackage__Group__3__Impl : ( ( rule__ActionPackage__Group_3__0 )? ) ;
+    public final void rule__ActionPackage__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4283:1: ( ( ( rule__ActionPackage__Group_3__0 )? ) )
+            // InternalActionDSL.g:4284:1: ( ( rule__ActionPackage__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:4284:1: ( ( rule__ActionPackage__Group_3__0 )? )
+            // InternalActionDSL.g:4285:2: ( rule__ActionPackage__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:4286:2: ( rule__ActionPackage__Group_3__0 )?
+            int alt56=2;
+            int LA56_0 = input.LA(1);
+
+            if ( (LA56_0==79) ) {
+                alt56=1;
+            }
+            switch (alt56) {
+                case 1 :
+                    // InternalActionDSL.g:4286:3: rule__ActionPackage__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionPackage__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ActionPackage__Group_3__0"
+    // InternalActionDSL.g:4295:1: rule__ActionPackage__Group_3__0 : rule__ActionPackage__Group_3__0__Impl rule__ActionPackage__Group_3__1 ;
+    public final void rule__ActionPackage__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4299:1: ( rule__ActionPackage__Group_3__0__Impl rule__ActionPackage__Group_3__1 )
+            // InternalActionDSL.g:4300:2: rule__ActionPackage__Group_3__0__Impl rule__ActionPackage__Group_3__1
+            {
+            pushFollow(FOLLOW_9);
+            rule__ActionPackage__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group_3__0"
+
+
+    // $ANTLR start "rule__ActionPackage__Group_3__0__Impl"
+    // InternalActionDSL.g:4307:1: rule__ActionPackage__Group_3__0__Impl : ( '{' ) ;
+    public final void rule__ActionPackage__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4311:1: ( ( '{' ) )
+            // InternalActionDSL.g:4312:1: ( '{' )
+            {
+            // InternalActionDSL.g:4312:1: ( '{' )
+            // InternalActionDSL.g:4313:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getLeftCurlyBracketKeyword_3_0()); 
+            }
+            match(input,79,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getLeftCurlyBracketKeyword_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ActionPackage__Group_3__1"
+    // InternalActionDSL.g:4322:1: rule__ActionPackage__Group_3__1 : rule__ActionPackage__Group_3__1__Impl rule__ActionPackage__Group_3__2 ;
+    public final void rule__ActionPackage__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4326:1: ( rule__ActionPackage__Group_3__1__Impl rule__ActionPackage__Group_3__2 )
+            // InternalActionDSL.g:4327:2: rule__ActionPackage__Group_3__1__Impl rule__ActionPackage__Group_3__2
+            {
+            pushFollow(FOLLOW_9);
+            rule__ActionPackage__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__Group_3__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group_3__1"
+
+
+    // $ANTLR start "rule__ActionPackage__Group_3__1__Impl"
+    // InternalActionDSL.g:4334:1: rule__ActionPackage__Group_3__1__Impl : ( ( rule__ActionPackage__CommandsAssignment_3_1 )* ) ;
+    public final void rule__ActionPackage__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4338:1: ( ( ( rule__ActionPackage__CommandsAssignment_3_1 )* ) )
+            // InternalActionDSL.g:4339:1: ( ( rule__ActionPackage__CommandsAssignment_3_1 )* )
+            {
+            // InternalActionDSL.g:4339:1: ( ( rule__ActionPackage__CommandsAssignment_3_1 )* )
+            // InternalActionDSL.g:4340:2: ( rule__ActionPackage__CommandsAssignment_3_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getCommandsAssignment_3_1()); 
+            }
+            // InternalActionDSL.g:4341:2: ( rule__ActionPackage__CommandsAssignment_3_1 )*
+            loop57:
+            do {
+                int alt57=2;
+                int LA57_0 = input.LA(1);
+
+                if ( (LA57_0==81) ) {
+                    alt57=1;
+                }
+
+
+                switch (alt57) {
+            	case 1 :
+            	    // InternalActionDSL.g:4341:3: rule__ActionPackage__CommandsAssignment_3_1
+            	    {
+            	    pushFollow(FOLLOW_10);
+            	    rule__ActionPackage__CommandsAssignment_3_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop57;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getCommandsAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ActionPackage__Group_3__2"
+    // InternalActionDSL.g:4349:1: rule__ActionPackage__Group_3__2 : rule__ActionPackage__Group_3__2__Impl rule__ActionPackage__Group_3__3 ;
+    public final void rule__ActionPackage__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4353:1: ( rule__ActionPackage__Group_3__2__Impl rule__ActionPackage__Group_3__3 )
+            // InternalActionDSL.g:4354:2: rule__ActionPackage__Group_3__2__Impl rule__ActionPackage__Group_3__3
+            {
+            pushFollow(FOLLOW_9);
+            rule__ActionPackage__Group_3__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__Group_3__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group_3__2"
+
+
+    // $ANTLR start "rule__ActionPackage__Group_3__2__Impl"
+    // InternalActionDSL.g:4361:1: rule__ActionPackage__Group_3__2__Impl : ( ( rule__ActionPackage__ToolbarsAssignment_3_2 )* ) ;
+    public final void rule__ActionPackage__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4365:1: ( ( ( rule__ActionPackage__ToolbarsAssignment_3_2 )* ) )
+            // InternalActionDSL.g:4366:1: ( ( rule__ActionPackage__ToolbarsAssignment_3_2 )* )
+            {
+            // InternalActionDSL.g:4366:1: ( ( rule__ActionPackage__ToolbarsAssignment_3_2 )* )
+            // InternalActionDSL.g:4367:2: ( rule__ActionPackage__ToolbarsAssignment_3_2 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getToolbarsAssignment_3_2()); 
+            }
+            // InternalActionDSL.g:4368:2: ( rule__ActionPackage__ToolbarsAssignment_3_2 )*
+            loop58:
+            do {
+                int alt58=2;
+                int LA58_0 = input.LA(1);
+
+                if ( (LA58_0==82) ) {
+                    alt58=1;
+                }
+
+
+                switch (alt58) {
+            	case 1 :
+            	    // InternalActionDSL.g:4368:3: rule__ActionPackage__ToolbarsAssignment_3_2
+            	    {
+            	    pushFollow(FOLLOW_11);
+            	    rule__ActionPackage__ToolbarsAssignment_3_2();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop58;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getToolbarsAssignment_3_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__ActionPackage__Group_3__3"
+    // InternalActionDSL.g:4376:1: rule__ActionPackage__Group_3__3 : rule__ActionPackage__Group_3__3__Impl ;
+    public final void rule__ActionPackage__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4380:1: ( rule__ActionPackage__Group_3__3__Impl )
+            // InternalActionDSL.g:4381:2: rule__ActionPackage__Group_3__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionPackage__Group_3__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group_3__3"
+
+
+    // $ANTLR start "rule__ActionPackage__Group_3__3__Impl"
+    // InternalActionDSL.g:4387:1: rule__ActionPackage__Group_3__3__Impl : ( '}' ) ;
+    public final void rule__ActionPackage__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4391:1: ( ( '}' ) )
+            // InternalActionDSL.g:4392:1: ( '}' )
+            {
+            // InternalActionDSL.g:4392:1: ( '}' )
+            // InternalActionDSL.g:4393:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getRightCurlyBracketKeyword_3_3()); 
+            }
+            match(input,80,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getRightCurlyBracketKeyword_3_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__0"
+    // InternalActionDSL.g:4403:1: rule__ActionCommand__Group__0 : rule__ActionCommand__Group__0__Impl rule__ActionCommand__Group__1 ;
+    public final void rule__ActionCommand__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4407:1: ( rule__ActionCommand__Group__0__Impl rule__ActionCommand__Group__1 )
+            // InternalActionDSL.g:4408:2: rule__ActionCommand__Group__0__Impl rule__ActionCommand__Group__1
+            {
+            pushFollow(FOLLOW_12);
+            rule__ActionCommand__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__0"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__0__Impl"
+    // InternalActionDSL.g:4415:1: rule__ActionCommand__Group__0__Impl : ( () ) ;
+    public final void rule__ActionCommand__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4419:1: ( ( () ) )
+            // InternalActionDSL.g:4420:1: ( () )
+            {
+            // InternalActionDSL.g:4420:1: ( () )
+            // InternalActionDSL.g:4421:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getActionCommandAction_0()); 
+            }
+            // InternalActionDSL.g:4422:2: ()
+            // InternalActionDSL.g:4422:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getActionCommandAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__1"
+    // InternalActionDSL.g:4430:1: rule__ActionCommand__Group__1 : rule__ActionCommand__Group__1__Impl rule__ActionCommand__Group__2 ;
+    public final void rule__ActionCommand__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4434:1: ( rule__ActionCommand__Group__1__Impl rule__ActionCommand__Group__2 )
+            // InternalActionDSL.g:4435:2: rule__ActionCommand__Group__1__Impl rule__ActionCommand__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionCommand__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__1"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__1__Impl"
+    // InternalActionDSL.g:4442:1: rule__ActionCommand__Group__1__Impl : ( 'command' ) ;
+    public final void rule__ActionCommand__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4446:1: ( ( 'command' ) )
+            // InternalActionDSL.g:4447:1: ( 'command' )
+            {
+            // InternalActionDSL.g:4447:1: ( 'command' )
+            // InternalActionDSL.g:4448:2: 'command'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getCommandKeyword_1()); 
+            }
+            match(input,81,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getCommandKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__2"
+    // InternalActionDSL.g:4457:1: rule__ActionCommand__Group__2 : rule__ActionCommand__Group__2__Impl rule__ActionCommand__Group__3 ;
+    public final void rule__ActionCommand__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4461:1: ( rule__ActionCommand__Group__2__Impl rule__ActionCommand__Group__3 )
+            // InternalActionDSL.g:4462:2: rule__ActionCommand__Group__2__Impl rule__ActionCommand__Group__3
+            {
+            pushFollow(FOLLOW_13);
+            rule__ActionCommand__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__2"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__2__Impl"
+    // InternalActionDSL.g:4469:1: rule__ActionCommand__Group__2__Impl : ( ( rule__ActionCommand__NameAssignment_2 ) ) ;
+    public final void rule__ActionCommand__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4473:1: ( ( ( rule__ActionCommand__NameAssignment_2 ) ) )
+            // InternalActionDSL.g:4474:1: ( ( rule__ActionCommand__NameAssignment_2 ) )
+            {
+            // InternalActionDSL.g:4474:1: ( ( rule__ActionCommand__NameAssignment_2 ) )
+            // InternalActionDSL.g:4475:2: ( rule__ActionCommand__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getNameAssignment_2()); 
+            }
+            // InternalActionDSL.g:4476:2: ( rule__ActionCommand__NameAssignment_2 )
+            // InternalActionDSL.g:4476:3: rule__ActionCommand__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__3"
+    // InternalActionDSL.g:4484:1: rule__ActionCommand__Group__3 : rule__ActionCommand__Group__3__Impl rule__ActionCommand__Group__4 ;
+    public final void rule__ActionCommand__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4488:1: ( rule__ActionCommand__Group__3__Impl rule__ActionCommand__Group__4 )
+            // InternalActionDSL.g:4489:2: rule__ActionCommand__Group__3__Impl rule__ActionCommand__Group__4
+            {
+            pushFollow(FOLLOW_13);
+            rule__ActionCommand__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__3"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__3__Impl"
+    // InternalActionDSL.g:4496:1: rule__ActionCommand__Group__3__Impl : ( ( rule__ActionCommand__Group_3__0 )? ) ;
+    public final void rule__ActionCommand__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4500:1: ( ( ( rule__ActionCommand__Group_3__0 )? ) )
+            // InternalActionDSL.g:4501:1: ( ( rule__ActionCommand__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:4501:1: ( ( rule__ActionCommand__Group_3__0 )? )
+            // InternalActionDSL.g:4502:2: ( rule__ActionCommand__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:4503:2: ( rule__ActionCommand__Group_3__0 )?
+            int alt59=2;
+            int LA59_0 = input.LA(1);
+
+            if ( (LA59_0==129) ) {
+                alt59=1;
+            }
+            switch (alt59) {
+                case 1 :
+                    // InternalActionDSL.g:4503:3: rule__ActionCommand__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionCommand__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__4"
+    // InternalActionDSL.g:4511:1: rule__ActionCommand__Group__4 : rule__ActionCommand__Group__4__Impl rule__ActionCommand__Group__5 ;
+    public final void rule__ActionCommand__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4515:1: ( rule__ActionCommand__Group__4__Impl rule__ActionCommand__Group__5 )
+            // InternalActionDSL.g:4516:2: rule__ActionCommand__Group__4__Impl rule__ActionCommand__Group__5
+            {
+            pushFollow(FOLLOW_13);
+            rule__ActionCommand__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__4"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__4__Impl"
+    // InternalActionDSL.g:4523:1: rule__ActionCommand__Group__4__Impl : ( ( rule__ActionCommand__Group_4__0 )? ) ;
+    public final void rule__ActionCommand__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4527:1: ( ( ( rule__ActionCommand__Group_4__0 )? ) )
+            // InternalActionDSL.g:4528:1: ( ( rule__ActionCommand__Group_4__0 )? )
+            {
+            // InternalActionDSL.g:4528:1: ( ( rule__ActionCommand__Group_4__0 )? )
+            // InternalActionDSL.g:4529:2: ( rule__ActionCommand__Group_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getGroup_4()); 
+            }
+            // InternalActionDSL.g:4530:2: ( rule__ActionCommand__Group_4__0 )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( (LA60_0==130) ) {
+                alt60=1;
+            }
+            switch (alt60) {
+                case 1 :
+                    // InternalActionDSL.g:4530:3: rule__ActionCommand__Group_4__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionCommand__Group_4__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getGroup_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__5"
+    // InternalActionDSL.g:4538:1: rule__ActionCommand__Group__5 : rule__ActionCommand__Group__5__Impl ;
+    public final void rule__ActionCommand__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4542:1: ( rule__ActionCommand__Group__5__Impl )
+            // InternalActionDSL.g:4543:2: rule__ActionCommand__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__5"
+
+
+    // $ANTLR start "rule__ActionCommand__Group__5__Impl"
+    // InternalActionDSL.g:4549:1: rule__ActionCommand__Group__5__Impl : ( ( rule__ActionCommand__ActionTypeAssignment_5 ) ) ;
+    public final void rule__ActionCommand__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4553:1: ( ( ( rule__ActionCommand__ActionTypeAssignment_5 ) ) )
+            // InternalActionDSL.g:4554:1: ( ( rule__ActionCommand__ActionTypeAssignment_5 ) )
+            {
+            // InternalActionDSL.g:4554:1: ( ( rule__ActionCommand__ActionTypeAssignment_5 ) )
+            // InternalActionDSL.g:4555:2: ( rule__ActionCommand__ActionTypeAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getActionTypeAssignment_5()); 
+            }
+            // InternalActionDSL.g:4556:2: ( rule__ActionCommand__ActionTypeAssignment_5 )
+            // InternalActionDSL.g:4556:3: rule__ActionCommand__ActionTypeAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__ActionTypeAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getActionTypeAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group_3__0"
+    // InternalActionDSL.g:4565:1: rule__ActionCommand__Group_3__0 : rule__ActionCommand__Group_3__0__Impl rule__ActionCommand__Group_3__1 ;
+    public final void rule__ActionCommand__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4569:1: ( rule__ActionCommand__Group_3__0__Impl rule__ActionCommand__Group_3__1 )
+            // InternalActionDSL.g:4570:2: rule__ActionCommand__Group_3__0__Impl rule__ActionCommand__Group_3__1
+            {
+            pushFollow(FOLLOW_14);
+            rule__ActionCommand__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group_3__0"
+
+
+    // $ANTLR start "rule__ActionCommand__Group_3__0__Impl"
+    // InternalActionDSL.g:4577:1: rule__ActionCommand__Group_3__0__Impl : ( ( rule__ActionCommand__HasDescriptionAssignment_3_0 ) ) ;
+    public final void rule__ActionCommand__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4581:1: ( ( ( rule__ActionCommand__HasDescriptionAssignment_3_0 ) ) )
+            // InternalActionDSL.g:4582:1: ( ( rule__ActionCommand__HasDescriptionAssignment_3_0 ) )
+            {
+            // InternalActionDSL.g:4582:1: ( ( rule__ActionCommand__HasDescriptionAssignment_3_0 ) )
+            // InternalActionDSL.g:4583:2: ( rule__ActionCommand__HasDescriptionAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getHasDescriptionAssignment_3_0()); 
+            }
+            // InternalActionDSL.g:4584:2: ( rule__ActionCommand__HasDescriptionAssignment_3_0 )
+            // InternalActionDSL.g:4584:3: rule__ActionCommand__HasDescriptionAssignment_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__HasDescriptionAssignment_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getHasDescriptionAssignment_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group_3__1"
+    // InternalActionDSL.g:4592:1: rule__ActionCommand__Group_3__1 : rule__ActionCommand__Group_3__1__Impl ;
+    public final void rule__ActionCommand__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4596:1: ( rule__ActionCommand__Group_3__1__Impl )
+            // InternalActionDSL.g:4597:2: rule__ActionCommand__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group_3__1"
+
+
+    // $ANTLR start "rule__ActionCommand__Group_3__1__Impl"
+    // InternalActionDSL.g:4603:1: rule__ActionCommand__Group_3__1__Impl : ( ( rule__ActionCommand__DescriptionAssignment_3_1 ) ) ;
+    public final void rule__ActionCommand__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4607:1: ( ( ( rule__ActionCommand__DescriptionAssignment_3_1 ) ) )
+            // InternalActionDSL.g:4608:1: ( ( rule__ActionCommand__DescriptionAssignment_3_1 ) )
+            {
+            // InternalActionDSL.g:4608:1: ( ( rule__ActionCommand__DescriptionAssignment_3_1 ) )
+            // InternalActionDSL.g:4609:2: ( rule__ActionCommand__DescriptionAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getDescriptionAssignment_3_1()); 
+            }
+            // InternalActionDSL.g:4610:2: ( rule__ActionCommand__DescriptionAssignment_3_1 )
+            // InternalActionDSL.g:4610:3: rule__ActionCommand__DescriptionAssignment_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__DescriptionAssignment_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getDescriptionAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group_4__0"
+    // InternalActionDSL.g:4619:1: rule__ActionCommand__Group_4__0 : rule__ActionCommand__Group_4__0__Impl rule__ActionCommand__Group_4__1 ;
+    public final void rule__ActionCommand__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4623:1: ( rule__ActionCommand__Group_4__0__Impl rule__ActionCommand__Group_4__1 )
+            // InternalActionDSL.g:4624:2: rule__ActionCommand__Group_4__0__Impl rule__ActionCommand__Group_4__1
+            {
+            pushFollow(FOLLOW_14);
+            rule__ActionCommand__Group_4__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group_4__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group_4__0"
+
+
+    // $ANTLR start "rule__ActionCommand__Group_4__0__Impl"
+    // InternalActionDSL.g:4631:1: rule__ActionCommand__Group_4__0__Impl : ( ( rule__ActionCommand__HasKeyBindingAssignment_4_0 ) ) ;
+    public final void rule__ActionCommand__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4635:1: ( ( ( rule__ActionCommand__HasKeyBindingAssignment_4_0 ) ) )
+            // InternalActionDSL.g:4636:1: ( ( rule__ActionCommand__HasKeyBindingAssignment_4_0 ) )
+            {
+            // InternalActionDSL.g:4636:1: ( ( rule__ActionCommand__HasKeyBindingAssignment_4_0 ) )
+            // InternalActionDSL.g:4637:2: ( rule__ActionCommand__HasKeyBindingAssignment_4_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getHasKeyBindingAssignment_4_0()); 
+            }
+            // InternalActionDSL.g:4638:2: ( rule__ActionCommand__HasKeyBindingAssignment_4_0 )
+            // InternalActionDSL.g:4638:3: rule__ActionCommand__HasKeyBindingAssignment_4_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__HasKeyBindingAssignment_4_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getHasKeyBindingAssignment_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__ActionCommand__Group_4__1"
+    // InternalActionDSL.g:4646:1: rule__ActionCommand__Group_4__1 : rule__ActionCommand__Group_4__1__Impl ;
+    public final void rule__ActionCommand__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4650:1: ( rule__ActionCommand__Group_4__1__Impl )
+            // InternalActionDSL.g:4651:2: rule__ActionCommand__Group_4__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__Group_4__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group_4__1"
+
+
+    // $ANTLR start "rule__ActionCommand__Group_4__1__Impl"
+    // InternalActionDSL.g:4657:1: rule__ActionCommand__Group_4__1__Impl : ( ( rule__ActionCommand__KeyBindingAssignment_4_1 ) ) ;
+    public final void rule__ActionCommand__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4661:1: ( ( ( rule__ActionCommand__KeyBindingAssignment_4_1 ) ) )
+            // InternalActionDSL.g:4662:1: ( ( rule__ActionCommand__KeyBindingAssignment_4_1 ) )
+            {
+            // InternalActionDSL.g:4662:1: ( ( rule__ActionCommand__KeyBindingAssignment_4_1 ) )
+            // InternalActionDSL.g:4663:2: ( rule__ActionCommand__KeyBindingAssignment_4_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getKeyBindingAssignment_4_1()); 
+            }
+            // InternalActionDSL.g:4664:2: ( rule__ActionCommand__KeyBindingAssignment_4_1 )
+            // InternalActionDSL.g:4664:3: rule__ActionCommand__KeyBindingAssignment_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionCommand__KeyBindingAssignment_4_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getKeyBindingAssignment_4_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__0"
+    // InternalActionDSL.g:4673:1: rule__ActionToolbar__Group__0 : rule__ActionToolbar__Group__0__Impl rule__ActionToolbar__Group__1 ;
+    public final void rule__ActionToolbar__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4677:1: ( rule__ActionToolbar__Group__0__Impl rule__ActionToolbar__Group__1 )
+            // InternalActionDSL.g:4678:2: rule__ActionToolbar__Group__0__Impl rule__ActionToolbar__Group__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__ActionToolbar__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__0"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__0__Impl"
+    // InternalActionDSL.g:4685:1: rule__ActionToolbar__Group__0__Impl : ( () ) ;
+    public final void rule__ActionToolbar__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4689:1: ( ( () ) )
+            // InternalActionDSL.g:4690:1: ( () )
+            {
+            // InternalActionDSL.g:4690:1: ( () )
+            // InternalActionDSL.g:4691:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getActionToolbarAction_0()); 
+            }
+            // InternalActionDSL.g:4692:2: ()
+            // InternalActionDSL.g:4692:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getActionToolbarAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__1"
+    // InternalActionDSL.g:4700:1: rule__ActionToolbar__Group__1 : rule__ActionToolbar__Group__1__Impl rule__ActionToolbar__Group__2 ;
+    public final void rule__ActionToolbar__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4704:1: ( rule__ActionToolbar__Group__1__Impl rule__ActionToolbar__Group__2 )
+            // InternalActionDSL.g:4705:2: rule__ActionToolbar__Group__1__Impl rule__ActionToolbar__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionToolbar__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__1"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__1__Impl"
+    // InternalActionDSL.g:4712:1: rule__ActionToolbar__Group__1__Impl : ( 'toolbar' ) ;
+    public final void rule__ActionToolbar__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4716:1: ( ( 'toolbar' ) )
+            // InternalActionDSL.g:4717:1: ( 'toolbar' )
+            {
+            // InternalActionDSL.g:4717:1: ( 'toolbar' )
+            // InternalActionDSL.g:4718:2: 'toolbar'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getToolbarKeyword_1()); 
+            }
+            match(input,82,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getToolbarKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__2"
+    // InternalActionDSL.g:4727:1: rule__ActionToolbar__Group__2 : rule__ActionToolbar__Group__2__Impl rule__ActionToolbar__Group__3 ;
+    public final void rule__ActionToolbar__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4731:1: ( rule__ActionToolbar__Group__2__Impl rule__ActionToolbar__Group__3 )
+            // InternalActionDSL.g:4732:2: rule__ActionToolbar__Group__2__Impl rule__ActionToolbar__Group__3
+            {
+            pushFollow(FOLLOW_16);
+            rule__ActionToolbar__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__2"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__2__Impl"
+    // InternalActionDSL.g:4739:1: rule__ActionToolbar__Group__2__Impl : ( ( rule__ActionToolbar__NameAssignment_2 ) ) ;
+    public final void rule__ActionToolbar__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4743:1: ( ( ( rule__ActionToolbar__NameAssignment_2 ) ) )
+            // InternalActionDSL.g:4744:1: ( ( rule__ActionToolbar__NameAssignment_2 ) )
+            {
+            // InternalActionDSL.g:4744:1: ( ( rule__ActionToolbar__NameAssignment_2 ) )
+            // InternalActionDSL.g:4745:2: ( rule__ActionToolbar__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getNameAssignment_2()); 
+            }
+            // InternalActionDSL.g:4746:2: ( rule__ActionToolbar__NameAssignment_2 )
+            // InternalActionDSL.g:4746:3: rule__ActionToolbar__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__3"
+    // InternalActionDSL.g:4754:1: rule__ActionToolbar__Group__3 : rule__ActionToolbar__Group__3__Impl rule__ActionToolbar__Group__4 ;
+    public final void rule__ActionToolbar__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4758:1: ( rule__ActionToolbar__Group__3__Impl rule__ActionToolbar__Group__4 )
+            // InternalActionDSL.g:4759:2: rule__ActionToolbar__Group__3__Impl rule__ActionToolbar__Group__4
+            {
+            pushFollow(FOLLOW_16);
+            rule__ActionToolbar__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__3"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__3__Impl"
+    // InternalActionDSL.g:4766:1: rule__ActionToolbar__Group__3__Impl : ( ( rule__ActionToolbar__Group_3__0 )? ) ;
+    public final void rule__ActionToolbar__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4770:1: ( ( ( rule__ActionToolbar__Group_3__0 )? ) )
+            // InternalActionDSL.g:4771:1: ( ( rule__ActionToolbar__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:4771:1: ( ( rule__ActionToolbar__Group_3__0 )? )
+            // InternalActionDSL.g:4772:2: ( rule__ActionToolbar__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:4773:2: ( rule__ActionToolbar__Group_3__0 )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
+
+            if ( (LA61_0==129) ) {
+                alt61=1;
+            }
+            switch (alt61) {
+                case 1 :
+                    // InternalActionDSL.g:4773:3: rule__ActionToolbar__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionToolbar__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__4"
+    // InternalActionDSL.g:4781:1: rule__ActionToolbar__Group__4 : rule__ActionToolbar__Group__4__Impl ;
+    public final void rule__ActionToolbar__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4785:1: ( rule__ActionToolbar__Group__4__Impl )
+            // InternalActionDSL.g:4786:2: rule__ActionToolbar__Group__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__4"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group__4__Impl"
+    // InternalActionDSL.g:4792:1: rule__ActionToolbar__Group__4__Impl : ( ( rule__ActionToolbar__Group_4__0 )? ) ;
+    public final void rule__ActionToolbar__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4796:1: ( ( ( rule__ActionToolbar__Group_4__0 )? ) )
+            // InternalActionDSL.g:4797:1: ( ( rule__ActionToolbar__Group_4__0 )? )
+            {
+            // InternalActionDSL.g:4797:1: ( ( rule__ActionToolbar__Group_4__0 )? )
+            // InternalActionDSL.g:4798:2: ( rule__ActionToolbar__Group_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getGroup_4()); 
+            }
+            // InternalActionDSL.g:4799:2: ( rule__ActionToolbar__Group_4__0 )?
+            int alt62=2;
+            int LA62_0 = input.LA(1);
+
+            if ( (LA62_0==83) ) {
+                alt62=1;
+            }
+            switch (alt62) {
+                case 1 :
+                    // InternalActionDSL.g:4799:3: rule__ActionToolbar__Group_4__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionToolbar__Group_4__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getGroup_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_3__0"
+    // InternalActionDSL.g:4808:1: rule__ActionToolbar__Group_3__0 : rule__ActionToolbar__Group_3__0__Impl rule__ActionToolbar__Group_3__1 ;
+    public final void rule__ActionToolbar__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4812:1: ( rule__ActionToolbar__Group_3__0__Impl rule__ActionToolbar__Group_3__1 )
+            // InternalActionDSL.g:4813:2: rule__ActionToolbar__Group_3__0__Impl rule__ActionToolbar__Group_3__1
+            {
+            pushFollow(FOLLOW_14);
+            rule__ActionToolbar__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_3__0"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_3__0__Impl"
+    // InternalActionDSL.g:4820:1: rule__ActionToolbar__Group_3__0__Impl : ( ( rule__ActionToolbar__DescriptionAssignment_3_0 ) ) ;
+    public final void rule__ActionToolbar__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4824:1: ( ( ( rule__ActionToolbar__DescriptionAssignment_3_0 ) ) )
+            // InternalActionDSL.g:4825:1: ( ( rule__ActionToolbar__DescriptionAssignment_3_0 ) )
+            {
+            // InternalActionDSL.g:4825:1: ( ( rule__ActionToolbar__DescriptionAssignment_3_0 ) )
+            // InternalActionDSL.g:4826:2: ( rule__ActionToolbar__DescriptionAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getDescriptionAssignment_3_0()); 
+            }
+            // InternalActionDSL.g:4827:2: ( rule__ActionToolbar__DescriptionAssignment_3_0 )
+            // InternalActionDSL.g:4827:3: rule__ActionToolbar__DescriptionAssignment_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__DescriptionAssignment_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getDescriptionAssignment_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_3__1"
+    // InternalActionDSL.g:4835:1: rule__ActionToolbar__Group_3__1 : rule__ActionToolbar__Group_3__1__Impl ;
+    public final void rule__ActionToolbar__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4839:1: ( rule__ActionToolbar__Group_3__1__Impl )
+            // InternalActionDSL.g:4840:2: rule__ActionToolbar__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_3__1"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_3__1__Impl"
+    // InternalActionDSL.g:4846:1: rule__ActionToolbar__Group_3__1__Impl : ( ( rule__ActionToolbar__DescriptionValueAssignment_3_1 ) ) ;
+    public final void rule__ActionToolbar__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4850:1: ( ( ( rule__ActionToolbar__DescriptionValueAssignment_3_1 ) ) )
+            // InternalActionDSL.g:4851:1: ( ( rule__ActionToolbar__DescriptionValueAssignment_3_1 ) )
+            {
+            // InternalActionDSL.g:4851:1: ( ( rule__ActionToolbar__DescriptionValueAssignment_3_1 ) )
+            // InternalActionDSL.g:4852:2: ( rule__ActionToolbar__DescriptionValueAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getDescriptionValueAssignment_3_1()); 
+            }
+            // InternalActionDSL.g:4853:2: ( rule__ActionToolbar__DescriptionValueAssignment_3_1 )
+            // InternalActionDSL.g:4853:3: rule__ActionToolbar__DescriptionValueAssignment_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__DescriptionValueAssignment_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getDescriptionValueAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_4__0"
+    // InternalActionDSL.g:4862:1: rule__ActionToolbar__Group_4__0 : rule__ActionToolbar__Group_4__0__Impl rule__ActionToolbar__Group_4__1 ;
+    public final void rule__ActionToolbar__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4866:1: ( rule__ActionToolbar__Group_4__0__Impl rule__ActionToolbar__Group_4__1 )
+            // InternalActionDSL.g:4867:2: rule__ActionToolbar__Group_4__0__Impl rule__ActionToolbar__Group_4__1
+            {
+            pushFollow(FOLLOW_8);
+            rule__ActionToolbar__Group_4__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group_4__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_4__0"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_4__0__Impl"
+    // InternalActionDSL.g:4874:1: rule__ActionToolbar__Group_4__0__Impl : ( 'items' ) ;
+    public final void rule__ActionToolbar__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4878:1: ( ( 'items' ) )
+            // InternalActionDSL.g:4879:1: ( 'items' )
+            {
+            // InternalActionDSL.g:4879:1: ( 'items' )
+            // InternalActionDSL.g:4880:2: 'items'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getItemsKeyword_4_0()); 
+            }
+            match(input,83,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getItemsKeyword_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_4__1"
+    // InternalActionDSL.g:4889:1: rule__ActionToolbar__Group_4__1 : rule__ActionToolbar__Group_4__1__Impl rule__ActionToolbar__Group_4__2 ;
+    public final void rule__ActionToolbar__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4893:1: ( rule__ActionToolbar__Group_4__1__Impl rule__ActionToolbar__Group_4__2 )
+            // InternalActionDSL.g:4894:2: rule__ActionToolbar__Group_4__1__Impl rule__ActionToolbar__Group_4__2
+            {
+            pushFollow(FOLLOW_17);
+            rule__ActionToolbar__Group_4__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group_4__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_4__1"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_4__1__Impl"
+    // InternalActionDSL.g:4901:1: rule__ActionToolbar__Group_4__1__Impl : ( '{' ) ;
+    public final void rule__ActionToolbar__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4905:1: ( ( '{' ) )
+            // InternalActionDSL.g:4906:1: ( '{' )
+            {
+            // InternalActionDSL.g:4906:1: ( '{' )
+            // InternalActionDSL.g:4907:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getLeftCurlyBracketKeyword_4_1()); 
+            }
+            match(input,79,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getLeftCurlyBracketKeyword_4_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_4__2"
+    // InternalActionDSL.g:4916:1: rule__ActionToolbar__Group_4__2 : rule__ActionToolbar__Group_4__2__Impl rule__ActionToolbar__Group_4__3 ;
+    public final void rule__ActionToolbar__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4920:1: ( rule__ActionToolbar__Group_4__2__Impl rule__ActionToolbar__Group_4__3 )
+            // InternalActionDSL.g:4921:2: rule__ActionToolbar__Group_4__2__Impl rule__ActionToolbar__Group_4__3
+            {
+            pushFollow(FOLLOW_17);
+            rule__ActionToolbar__Group_4__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group_4__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_4__2"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_4__2__Impl"
+    // InternalActionDSL.g:4928:1: rule__ActionToolbar__Group_4__2__Impl : ( ( rule__ActionToolbar__ActionsAssignment_4_2 )* ) ;
+    public final void rule__ActionToolbar__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4932:1: ( ( ( rule__ActionToolbar__ActionsAssignment_4_2 )* ) )
+            // InternalActionDSL.g:4933:1: ( ( rule__ActionToolbar__ActionsAssignment_4_2 )* )
+            {
+            // InternalActionDSL.g:4933:1: ( ( rule__ActionToolbar__ActionsAssignment_4_2 )* )
+            // InternalActionDSL.g:4934:2: ( rule__ActionToolbar__ActionsAssignment_4_2 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getActionsAssignment_4_2()); 
+            }
+            // InternalActionDSL.g:4935:2: ( rule__ActionToolbar__ActionsAssignment_4_2 )*
+            loop63:
+            do {
+                int alt63=2;
+                int LA63_0 = input.LA(1);
+
+                if ( (LA63_0==84) ) {
+                    alt63=1;
+                }
+
+
+                switch (alt63) {
+            	case 1 :
+            	    // InternalActionDSL.g:4935:3: rule__ActionToolbar__ActionsAssignment_4_2
+            	    {
+            	    pushFollow(FOLLOW_18);
+            	    rule__ActionToolbar__ActionsAssignment_4_2();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop63;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getActionsAssignment_4_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_4__3"
+    // InternalActionDSL.g:4943:1: rule__ActionToolbar__Group_4__3 : rule__ActionToolbar__Group_4__3__Impl ;
+    public final void rule__ActionToolbar__Group_4__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4947:1: ( rule__ActionToolbar__Group_4__3__Impl )
+            // InternalActionDSL.g:4948:2: rule__ActionToolbar__Group_4__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionToolbar__Group_4__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_4__3"
+
+
+    // $ANTLR start "rule__ActionToolbar__Group_4__3__Impl"
+    // InternalActionDSL.g:4954:1: rule__ActionToolbar__Group_4__3__Impl : ( '}' ) ;
+    public final void rule__ActionToolbar__Group_4__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4958:1: ( ( '}' ) )
+            // InternalActionDSL.g:4959:1: ( '}' )
+            {
+            // InternalActionDSL.g:4959:1: ( '}' )
+            // InternalActionDSL.g:4960:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getRightCurlyBracketKeyword_4_3()); 
+            }
+            match(input,80,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getRightCurlyBracketKeyword_4_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__Group_4__3__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group__0"
+    // InternalActionDSL.g:4970:1: rule__ActionButton__Group__0 : rule__ActionButton__Group__0__Impl rule__ActionButton__Group__1 ;
+    public final void rule__ActionButton__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4974:1: ( rule__ActionButton__Group__0__Impl rule__ActionButton__Group__1 )
+            // InternalActionDSL.g:4975:2: rule__ActionButton__Group__0__Impl rule__ActionButton__Group__1
+            {
+            pushFollow(FOLLOW_19);
+            rule__ActionButton__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__0"
+
+
+    // $ANTLR start "rule__ActionButton__Group__0__Impl"
+    // InternalActionDSL.g:4982:1: rule__ActionButton__Group__0__Impl : ( () ) ;
+    public final void rule__ActionButton__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:4986:1: ( ( () ) )
+            // InternalActionDSL.g:4987:1: ( () )
+            {
+            // InternalActionDSL.g:4987:1: ( () )
+            // InternalActionDSL.g:4988:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getActionButtonAction_0()); 
+            }
+            // InternalActionDSL.g:4989:2: ()
+            // InternalActionDSL.g:4989:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getActionButtonAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group__1"
+    // InternalActionDSL.g:4997:1: rule__ActionButton__Group__1 : rule__ActionButton__Group__1__Impl rule__ActionButton__Group__2 ;
+    public final void rule__ActionButton__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5001:1: ( rule__ActionButton__Group__1__Impl rule__ActionButton__Group__2 )
+            // InternalActionDSL.g:5002:2: rule__ActionButton__Group__1__Impl rule__ActionButton__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionButton__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__1"
+
+
+    // $ANTLR start "rule__ActionButton__Group__1__Impl"
+    // InternalActionDSL.g:5009:1: rule__ActionButton__Group__1__Impl : ( 'item' ) ;
+    public final void rule__ActionButton__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5013:1: ( ( 'item' ) )
+            // InternalActionDSL.g:5014:1: ( 'item' )
+            {
+            // InternalActionDSL.g:5014:1: ( 'item' )
+            // InternalActionDSL.g:5015:2: 'item'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getItemKeyword_1()); 
+            }
+            match(input,84,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getItemKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group__2"
+    // InternalActionDSL.g:5024:1: rule__ActionButton__Group__2 : rule__ActionButton__Group__2__Impl rule__ActionButton__Group__3 ;
+    public final void rule__ActionButton__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5028:1: ( rule__ActionButton__Group__2__Impl rule__ActionButton__Group__3 )
+            // InternalActionDSL.g:5029:2: rule__ActionButton__Group__2__Impl rule__ActionButton__Group__3
+            {
+            pushFollow(FOLLOW_20);
+            rule__ActionButton__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__2"
+
+
+    // $ANTLR start "rule__ActionButton__Group__2__Impl"
+    // InternalActionDSL.g:5036:1: rule__ActionButton__Group__2__Impl : ( ( rule__ActionButton__NameAssignment_2 ) ) ;
+    public final void rule__ActionButton__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5040:1: ( ( ( rule__ActionButton__NameAssignment_2 ) ) )
+            // InternalActionDSL.g:5041:1: ( ( rule__ActionButton__NameAssignment_2 ) )
+            {
+            // InternalActionDSL.g:5041:1: ( ( rule__ActionButton__NameAssignment_2 ) )
+            // InternalActionDSL.g:5042:2: ( rule__ActionButton__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getNameAssignment_2()); 
+            }
+            // InternalActionDSL.g:5043:2: ( rule__ActionButton__NameAssignment_2 )
+            // InternalActionDSL.g:5043:3: rule__ActionButton__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group__3"
+    // InternalActionDSL.g:5051:1: rule__ActionButton__Group__3 : rule__ActionButton__Group__3__Impl rule__ActionButton__Group__4 ;
+    public final void rule__ActionButton__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5055:1: ( rule__ActionButton__Group__3__Impl rule__ActionButton__Group__4 )
+            // InternalActionDSL.g:5056:2: rule__ActionButton__Group__3__Impl rule__ActionButton__Group__4
+            {
+            pushFollow(FOLLOW_20);
+            rule__ActionButton__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__3"
+
+
+    // $ANTLR start "rule__ActionButton__Group__3__Impl"
+    // InternalActionDSL.g:5063:1: rule__ActionButton__Group__3__Impl : ( ( rule__ActionButton__Group_3__0 )? ) ;
+    public final void rule__ActionButton__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5067:1: ( ( ( rule__ActionButton__Group_3__0 )? ) )
+            // InternalActionDSL.g:5068:1: ( ( rule__ActionButton__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:5068:1: ( ( rule__ActionButton__Group_3__0 )? )
+            // InternalActionDSL.g:5069:2: ( rule__ActionButton__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:5070:2: ( rule__ActionButton__Group_3__0 )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
+
+            if ( (LA64_0==129) ) {
+                alt64=1;
+            }
+            switch (alt64) {
+                case 1 :
+                    // InternalActionDSL.g:5070:3: rule__ActionButton__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionButton__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group__4"
+    // InternalActionDSL.g:5078:1: rule__ActionButton__Group__4 : rule__ActionButton__Group__4__Impl rule__ActionButton__Group__5 ;
+    public final void rule__ActionButton__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5082:1: ( rule__ActionButton__Group__4__Impl rule__ActionButton__Group__5 )
+            // InternalActionDSL.g:5083:2: rule__ActionButton__Group__4__Impl rule__ActionButton__Group__5
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionButton__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__4"
+
+
+    // $ANTLR start "rule__ActionButton__Group__4__Impl"
+    // InternalActionDSL.g:5090:1: rule__ActionButton__Group__4__Impl : ( 'command' ) ;
+    public final void rule__ActionButton__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5094:1: ( ( 'command' ) )
+            // InternalActionDSL.g:5095:1: ( 'command' )
+            {
+            // InternalActionDSL.g:5095:1: ( 'command' )
+            // InternalActionDSL.g:5096:2: 'command'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getCommandKeyword_4()); 
+            }
+            match(input,81,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getCommandKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group__5"
+    // InternalActionDSL.g:5105:1: rule__ActionButton__Group__5 : rule__ActionButton__Group__5__Impl rule__ActionButton__Group__6 ;
+    public final void rule__ActionButton__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5109:1: ( rule__ActionButton__Group__5__Impl rule__ActionButton__Group__6 )
+            // InternalActionDSL.g:5110:2: rule__ActionButton__Group__5__Impl rule__ActionButton__Group__6
+            {
+            pushFollow(FOLLOW_21);
+            rule__ActionButton__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__5"
+
+
+    // $ANTLR start "rule__ActionButton__Group__5__Impl"
+    // InternalActionDSL.g:5117:1: rule__ActionButton__Group__5__Impl : ( ( rule__ActionButton__CommandAssignment_5 ) ) ;
+    public final void rule__ActionButton__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5121:1: ( ( ( rule__ActionButton__CommandAssignment_5 ) ) )
+            // InternalActionDSL.g:5122:1: ( ( rule__ActionButton__CommandAssignment_5 ) )
+            {
+            // InternalActionDSL.g:5122:1: ( ( rule__ActionButton__CommandAssignment_5 ) )
+            // InternalActionDSL.g:5123:2: ( rule__ActionButton__CommandAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getCommandAssignment_5()); 
+            }
+            // InternalActionDSL.g:5124:2: ( rule__ActionButton__CommandAssignment_5 )
+            // InternalActionDSL.g:5124:3: rule__ActionButton__CommandAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__CommandAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getCommandAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group__6"
+    // InternalActionDSL.g:5132:1: rule__ActionButton__Group__6 : rule__ActionButton__Group__6__Impl ;
+    public final void rule__ActionButton__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5136:1: ( rule__ActionButton__Group__6__Impl )
+            // InternalActionDSL.g:5137:2: rule__ActionButton__Group__6__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__6"
+
+
+    // $ANTLR start "rule__ActionButton__Group__6__Impl"
+    // InternalActionDSL.g:5143:1: rule__ActionButton__Group__6__Impl : ( ( rule__ActionButton__Group_6__0 )? ) ;
+    public final void rule__ActionButton__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5147:1: ( ( ( rule__ActionButton__Group_6__0 )? ) )
+            // InternalActionDSL.g:5148:1: ( ( rule__ActionButton__Group_6__0 )? )
+            {
+            // InternalActionDSL.g:5148:1: ( ( rule__ActionButton__Group_6__0 )? )
+            // InternalActionDSL.g:5149:2: ( rule__ActionButton__Group_6__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getGroup_6()); 
+            }
+            // InternalActionDSL.g:5150:2: ( rule__ActionButton__Group_6__0 )?
+            int alt65=2;
+            int LA65_0 = input.LA(1);
+
+            if ( (LA65_0==85) ) {
+                alt65=1;
+            }
+            switch (alt65) {
+                case 1 :
+                    // InternalActionDSL.g:5150:3: rule__ActionButton__Group_6__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionButton__Group_6__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getGroup_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group_3__0"
+    // InternalActionDSL.g:5159:1: rule__ActionButton__Group_3__0 : rule__ActionButton__Group_3__0__Impl rule__ActionButton__Group_3__1 ;
+    public final void rule__ActionButton__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5163:1: ( rule__ActionButton__Group_3__0__Impl rule__ActionButton__Group_3__1 )
+            // InternalActionDSL.g:5164:2: rule__ActionButton__Group_3__0__Impl rule__ActionButton__Group_3__1
+            {
+            pushFollow(FOLLOW_14);
+            rule__ActionButton__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group_3__0"
+
+
+    // $ANTLR start "rule__ActionButton__Group_3__0__Impl"
+    // InternalActionDSL.g:5171:1: rule__ActionButton__Group_3__0__Impl : ( ( rule__ActionButton__DescriptionAssignment_3_0 ) ) ;
+    public final void rule__ActionButton__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5175:1: ( ( ( rule__ActionButton__DescriptionAssignment_3_0 ) ) )
+            // InternalActionDSL.g:5176:1: ( ( rule__ActionButton__DescriptionAssignment_3_0 ) )
+            {
+            // InternalActionDSL.g:5176:1: ( ( rule__ActionButton__DescriptionAssignment_3_0 ) )
+            // InternalActionDSL.g:5177:2: ( rule__ActionButton__DescriptionAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getDescriptionAssignment_3_0()); 
+            }
+            // InternalActionDSL.g:5178:2: ( rule__ActionButton__DescriptionAssignment_3_0 )
+            // InternalActionDSL.g:5178:3: rule__ActionButton__DescriptionAssignment_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__DescriptionAssignment_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getDescriptionAssignment_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group_3__1"
+    // InternalActionDSL.g:5186:1: rule__ActionButton__Group_3__1 : rule__ActionButton__Group_3__1__Impl ;
+    public final void rule__ActionButton__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5190:1: ( rule__ActionButton__Group_3__1__Impl )
+            // InternalActionDSL.g:5191:2: rule__ActionButton__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group_3__1"
+
+
+    // $ANTLR start "rule__ActionButton__Group_3__1__Impl"
+    // InternalActionDSL.g:5197:1: rule__ActionButton__Group_3__1__Impl : ( ( rule__ActionButton__DescriptionValueAssignment_3_1 ) ) ;
+    public final void rule__ActionButton__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5201:1: ( ( ( rule__ActionButton__DescriptionValueAssignment_3_1 ) ) )
+            // InternalActionDSL.g:5202:1: ( ( rule__ActionButton__DescriptionValueAssignment_3_1 ) )
+            {
+            // InternalActionDSL.g:5202:1: ( ( rule__ActionButton__DescriptionValueAssignment_3_1 ) )
+            // InternalActionDSL.g:5203:2: ( rule__ActionButton__DescriptionValueAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getDescriptionValueAssignment_3_1()); 
+            }
+            // InternalActionDSL.g:5204:2: ( rule__ActionButton__DescriptionValueAssignment_3_1 )
+            // InternalActionDSL.g:5204:3: rule__ActionButton__DescriptionValueAssignment_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__DescriptionValueAssignment_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getDescriptionValueAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group_6__0"
+    // InternalActionDSL.g:5213:1: rule__ActionButton__Group_6__0 : rule__ActionButton__Group_6__0__Impl rule__ActionButton__Group_6__1 ;
+    public final void rule__ActionButton__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5217:1: ( rule__ActionButton__Group_6__0__Impl rule__ActionButton__Group_6__1 )
+            // InternalActionDSL.g:5218:2: rule__ActionButton__Group_6__0__Impl rule__ActionButton__Group_6__1
+            {
+            pushFollow(FOLLOW_14);
+            rule__ActionButton__Group_6__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group_6__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group_6__0"
+
+
+    // $ANTLR start "rule__ActionButton__Group_6__0__Impl"
+    // InternalActionDSL.g:5225:1: rule__ActionButton__Group_6__0__Impl : ( 'icon' ) ;
+    public final void rule__ActionButton__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5229:1: ( ( 'icon' ) )
+            // InternalActionDSL.g:5230:1: ( 'icon' )
+            {
+            // InternalActionDSL.g:5230:1: ( 'icon' )
+            // InternalActionDSL.g:5231:2: 'icon'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getIconKeyword_6_0()); 
+            }
+            match(input,85,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getIconKeyword_6_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__ActionButton__Group_6__1"
+    // InternalActionDSL.g:5240:1: rule__ActionButton__Group_6__1 : rule__ActionButton__Group_6__1__Impl ;
+    public final void rule__ActionButton__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5244:1: ( rule__ActionButton__Group_6__1__Impl )
+            // InternalActionDSL.g:5245:2: rule__ActionButton__Group_6__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__Group_6__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group_6__1"
+
+
+    // $ANTLR start "rule__ActionButton__Group_6__1__Impl"
+    // InternalActionDSL.g:5251:1: rule__ActionButton__Group_6__1__Impl : ( ( rule__ActionButton__IconURIAssignment_6_1 ) ) ;
+    public final void rule__ActionButton__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5255:1: ( ( ( rule__ActionButton__IconURIAssignment_6_1 ) ) )
+            // InternalActionDSL.g:5256:1: ( ( rule__ActionButton__IconURIAssignment_6_1 ) )
+            {
+            // InternalActionDSL.g:5256:1: ( ( rule__ActionButton__IconURIAssignment_6_1 ) )
+            // InternalActionDSL.g:5257:2: ( rule__ActionButton__IconURIAssignment_6_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getIconURIAssignment_6_1()); 
+            }
+            // InternalActionDSL.g:5258:2: ( rule__ActionButton__IconURIAssignment_6_1 )
+            // InternalActionDSL.g:5258:3: rule__ActionButton__IconURIAssignment_6_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionButton__IconURIAssignment_6_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getIconURIAssignment_6_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__ActionTask__Group__0"
+    // InternalActionDSL.g:5267:1: rule__ActionTask__Group__0 : rule__ActionTask__Group__0__Impl rule__ActionTask__Group__1 ;
+    public final void rule__ActionTask__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5271:1: ( rule__ActionTask__Group__0__Impl rule__ActionTask__Group__1 )
+            // InternalActionDSL.g:5272:2: rule__ActionTask__Group__0__Impl rule__ActionTask__Group__1
+            {
+            pushFollow(FOLLOW_22);
+            rule__ActionTask__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionTask__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionTask__Group__0"
+
+
+    // $ANTLR start "rule__ActionTask__Group__0__Impl"
+    // InternalActionDSL.g:5279:1: rule__ActionTask__Group__0__Impl : ( 'taskAction' ) ;
+    public final void rule__ActionTask__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5283:1: ( ( 'taskAction' ) )
+            // InternalActionDSL.g:5284:1: ( 'taskAction' )
+            {
+            // InternalActionDSL.g:5284:1: ( 'taskAction' )
+            // InternalActionDSL.g:5285:2: 'taskAction'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionTaskAccess().getTaskActionKeyword_0()); 
+            }
+            match(input,86,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionTaskAccess().getTaskActionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionTask__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionTask__Group__1"
+    // InternalActionDSL.g:5294:1: rule__ActionTask__Group__1 : rule__ActionTask__Group__1__Impl ;
+    public final void rule__ActionTask__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5298:1: ( rule__ActionTask__Group__1__Impl )
+            // InternalActionDSL.g:5299:2: rule__ActionTask__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionTask__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionTask__Group__1"
+
+
+    // $ANTLR start "rule__ActionTask__Group__1__Impl"
+    // InternalActionDSL.g:5305:1: rule__ActionTask__Group__1__Impl : ( ( rule__ActionTask__ActionAssignment_1 ) ) ;
+    public final void rule__ActionTask__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5309:1: ( ( ( rule__ActionTask__ActionAssignment_1 ) ) )
+            // InternalActionDSL.g:5310:1: ( ( rule__ActionTask__ActionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:5310:1: ( ( rule__ActionTask__ActionAssignment_1 ) )
+            // InternalActionDSL.g:5311:2: ( rule__ActionTask__ActionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionTaskAccess().getActionAssignment_1()); 
+            }
+            // InternalActionDSL.g:5312:2: ( rule__ActionTask__ActionAssignment_1 )
+            // InternalActionDSL.g:5312:3: rule__ActionTask__ActionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionTask__ActionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionTaskAccess().getActionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionTask__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionSelectWorkload__Group__0"
+    // InternalActionDSL.g:5321:1: rule__ActionSelectWorkload__Group__0 : rule__ActionSelectWorkload__Group__0__Impl rule__ActionSelectWorkload__Group__1 ;
+    public final void rule__ActionSelectWorkload__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5325:1: ( rule__ActionSelectWorkload__Group__0__Impl rule__ActionSelectWorkload__Group__1 )
+            // InternalActionDSL.g:5326:2: rule__ActionSelectWorkload__Group__0__Impl rule__ActionSelectWorkload__Group__1
+            {
+            pushFollow(FOLLOW_23);
+            rule__ActionSelectWorkload__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionSelectWorkload__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionSelectWorkload__Group__0"
+
+
+    // $ANTLR start "rule__ActionSelectWorkload__Group__0__Impl"
+    // InternalActionDSL.g:5333:1: rule__ActionSelectWorkload__Group__0__Impl : ( 'selectWorkloadAction' ) ;
+    public final void rule__ActionSelectWorkload__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5337:1: ( ( 'selectWorkloadAction' ) )
+            // InternalActionDSL.g:5338:1: ( 'selectWorkloadAction' )
+            {
+            // InternalActionDSL.g:5338:1: ( 'selectWorkloadAction' )
+            // InternalActionDSL.g:5339:2: 'selectWorkloadAction'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionSelectWorkloadAccess().getSelectWorkloadActionKeyword_0()); 
+            }
+            match(input,87,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionSelectWorkloadAccess().getSelectWorkloadActionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionSelectWorkload__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionSelectWorkload__Group__1"
+    // InternalActionDSL.g:5348:1: rule__ActionSelectWorkload__Group__1 : rule__ActionSelectWorkload__Group__1__Impl ;
+    public final void rule__ActionSelectWorkload__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5352:1: ( rule__ActionSelectWorkload__Group__1__Impl )
+            // InternalActionDSL.g:5353:2: rule__ActionSelectWorkload__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionSelectWorkload__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionSelectWorkload__Group__1"
+
+
+    // $ANTLR start "rule__ActionSelectWorkload__Group__1__Impl"
+    // InternalActionDSL.g:5359:1: rule__ActionSelectWorkload__Group__1__Impl : ( ( rule__ActionSelectWorkload__ActionAssignment_1 ) ) ;
+    public final void rule__ActionSelectWorkload__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5363:1: ( ( ( rule__ActionSelectWorkload__ActionAssignment_1 ) ) )
+            // InternalActionDSL.g:5364:1: ( ( rule__ActionSelectWorkload__ActionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:5364:1: ( ( rule__ActionSelectWorkload__ActionAssignment_1 ) )
+            // InternalActionDSL.g:5365:2: ( rule__ActionSelectWorkload__ActionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionSelectWorkloadAccess().getActionAssignment_1()); 
+            }
+            // InternalActionDSL.g:5366:2: ( rule__ActionSelectWorkload__ActionAssignment_1 )
+            // InternalActionDSL.g:5366:3: rule__ActionSelectWorkload__ActionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionSelectWorkload__ActionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionSelectWorkloadAccess().getActionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionSelectWorkload__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionDialog__Group__0"
+    // InternalActionDSL.g:5375:1: rule__ActionDialog__Group__0 : rule__ActionDialog__Group__0__Impl rule__ActionDialog__Group__1 ;
+    public final void rule__ActionDialog__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5379:1: ( rule__ActionDialog__Group__0__Impl rule__ActionDialog__Group__1 )
+            // InternalActionDSL.g:5380:2: rule__ActionDialog__Group__0__Impl rule__ActionDialog__Group__1
+            {
+            pushFollow(FOLLOW_24);
+            rule__ActionDialog__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionDialog__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDialog__Group__0"
+
+
+    // $ANTLR start "rule__ActionDialog__Group__0__Impl"
+    // InternalActionDSL.g:5387:1: rule__ActionDialog__Group__0__Impl : ( 'dialogAction' ) ;
+    public final void rule__ActionDialog__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5391:1: ( ( 'dialogAction' ) )
+            // InternalActionDSL.g:5392:1: ( 'dialogAction' )
+            {
+            // InternalActionDSL.g:5392:1: ( 'dialogAction' )
+            // InternalActionDSL.g:5393:2: 'dialogAction'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDialogAccess().getDialogActionKeyword_0()); 
+            }
+            match(input,88,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDialogAccess().getDialogActionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDialog__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionDialog__Group__1"
+    // InternalActionDSL.g:5402:1: rule__ActionDialog__Group__1 : rule__ActionDialog__Group__1__Impl ;
+    public final void rule__ActionDialog__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5406:1: ( rule__ActionDialog__Group__1__Impl )
+            // InternalActionDSL.g:5407:2: rule__ActionDialog__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionDialog__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDialog__Group__1"
+
+
+    // $ANTLR start "rule__ActionDialog__Group__1__Impl"
+    // InternalActionDSL.g:5413:1: rule__ActionDialog__Group__1__Impl : ( ( rule__ActionDialog__ActionAssignment_1 ) ) ;
+    public final void rule__ActionDialog__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5417:1: ( ( ( rule__ActionDialog__ActionAssignment_1 ) ) )
+            // InternalActionDSL.g:5418:1: ( ( rule__ActionDialog__ActionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:5418:1: ( ( rule__ActionDialog__ActionAssignment_1 ) )
+            // InternalActionDSL.g:5419:2: ( rule__ActionDialog__ActionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDialogAccess().getActionAssignment_1()); 
+            }
+            // InternalActionDSL.g:5420:2: ( rule__ActionDialog__ActionAssignment_1 )
+            // InternalActionDSL.g:5420:3: rule__ActionDialog__ActionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionDialog__ActionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDialogAccess().getActionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDialog__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionReport__Group__0"
+    // InternalActionDSL.g:5429:1: rule__ActionReport__Group__0 : rule__ActionReport__Group__0__Impl rule__ActionReport__Group__1 ;
+    public final void rule__ActionReport__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5433:1: ( rule__ActionReport__Group__0__Impl rule__ActionReport__Group__1 )
+            // InternalActionDSL.g:5434:2: rule__ActionReport__Group__0__Impl rule__ActionReport__Group__1
+            {
+            pushFollow(FOLLOW_25);
+            rule__ActionReport__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionReport__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionReport__Group__0"
+
+
+    // $ANTLR start "rule__ActionReport__Group__0__Impl"
+    // InternalActionDSL.g:5441:1: rule__ActionReport__Group__0__Impl : ( 'reportAction' ) ;
+    public final void rule__ActionReport__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5445:1: ( ( 'reportAction' ) )
+            // InternalActionDSL.g:5446:1: ( 'reportAction' )
+            {
+            // InternalActionDSL.g:5446:1: ( 'reportAction' )
+            // InternalActionDSL.g:5447:2: 'reportAction'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionReportAccess().getReportActionKeyword_0()); 
+            }
+            match(input,89,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionReportAccess().getReportActionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionReport__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionReport__Group__1"
+    // InternalActionDSL.g:5456:1: rule__ActionReport__Group__1 : rule__ActionReport__Group__1__Impl ;
+    public final void rule__ActionReport__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5460:1: ( rule__ActionReport__Group__1__Impl )
+            // InternalActionDSL.g:5461:2: rule__ActionReport__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionReport__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionReport__Group__1"
+
+
+    // $ANTLR start "rule__ActionReport__Group__1__Impl"
+    // InternalActionDSL.g:5467:1: rule__ActionReport__Group__1__Impl : ( ( rule__ActionReport__ActionAssignment_1 ) ) ;
+    public final void rule__ActionReport__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5471:1: ( ( ( rule__ActionReport__ActionAssignment_1 ) ) )
+            // InternalActionDSL.g:5472:1: ( ( rule__ActionReport__ActionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:5472:1: ( ( rule__ActionReport__ActionAssignment_1 ) )
+            // InternalActionDSL.g:5473:2: ( rule__ActionReport__ActionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionReportAccess().getActionAssignment_1()); 
+            }
+            // InternalActionDSL.g:5474:2: ( rule__ActionReport__ActionAssignment_1 )
+            // InternalActionDSL.g:5474:3: rule__ActionReport__ActionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionReport__ActionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionReportAccess().getActionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionReport__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionChart__Group__0"
+    // InternalActionDSL.g:5483:1: rule__ActionChart__Group__0 : rule__ActionChart__Group__0__Impl rule__ActionChart__Group__1 ;
+    public final void rule__ActionChart__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5487:1: ( rule__ActionChart__Group__0__Impl rule__ActionChart__Group__1 )
+            // InternalActionDSL.g:5488:2: rule__ActionChart__Group__0__Impl rule__ActionChart__Group__1
+            {
+            pushFollow(FOLLOW_26);
+            rule__ActionChart__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionChart__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionChart__Group__0"
+
+
+    // $ANTLR start "rule__ActionChart__Group__0__Impl"
+    // InternalActionDSL.g:5495:1: rule__ActionChart__Group__0__Impl : ( 'chartAction' ) ;
+    public final void rule__ActionChart__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5499:1: ( ( 'chartAction' ) )
+            // InternalActionDSL.g:5500:1: ( 'chartAction' )
+            {
+            // InternalActionDSL.g:5500:1: ( 'chartAction' )
+            // InternalActionDSL.g:5501:2: 'chartAction'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionChartAccess().getChartActionKeyword_0()); 
+            }
+            match(input,90,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionChartAccess().getChartActionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionChart__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionChart__Group__1"
+    // InternalActionDSL.g:5510:1: rule__ActionChart__Group__1 : rule__ActionChart__Group__1__Impl ;
+    public final void rule__ActionChart__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5514:1: ( rule__ActionChart__Group__1__Impl )
+            // InternalActionDSL.g:5515:2: rule__ActionChart__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionChart__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionChart__Group__1"
+
+
+    // $ANTLR start "rule__ActionChart__Group__1__Impl"
+    // InternalActionDSL.g:5521:1: rule__ActionChart__Group__1__Impl : ( ( rule__ActionChart__ActionAssignment_1 ) ) ;
+    public final void rule__ActionChart__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5525:1: ( ( ( rule__ActionChart__ActionAssignment_1 ) ) )
+            // InternalActionDSL.g:5526:1: ( ( rule__ActionChart__ActionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:5526:1: ( ( rule__ActionChart__ActionAssignment_1 ) )
+            // InternalActionDSL.g:5527:2: ( rule__ActionChart__ActionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionChartAccess().getActionAssignment_1()); 
+            }
+            // InternalActionDSL.g:5528:2: ( rule__ActionChart__ActionAssignment_1 )
+            // InternalActionDSL.g:5528:3: rule__ActionChart__ActionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionChart__ActionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionChartAccess().getActionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionChart__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionWorkflow__Group__0"
+    // InternalActionDSL.g:5537:1: rule__ActionWorkflow__Group__0 : rule__ActionWorkflow__Group__0__Impl rule__ActionWorkflow__Group__1 ;
+    public final void rule__ActionWorkflow__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5541:1: ( rule__ActionWorkflow__Group__0__Impl rule__ActionWorkflow__Group__1 )
+            // InternalActionDSL.g:5542:2: rule__ActionWorkflow__Group__0__Impl rule__ActionWorkflow__Group__1
+            {
+            pushFollow(FOLLOW_27);
+            rule__ActionWorkflow__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionWorkflow__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionWorkflow__Group__0"
+
+
+    // $ANTLR start "rule__ActionWorkflow__Group__0__Impl"
+    // InternalActionDSL.g:5549:1: rule__ActionWorkflow__Group__0__Impl : ( 'workflowAction' ) ;
+    public final void rule__ActionWorkflow__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5553:1: ( ( 'workflowAction' ) )
+            // InternalActionDSL.g:5554:1: ( 'workflowAction' )
+            {
+            // InternalActionDSL.g:5554:1: ( 'workflowAction' )
+            // InternalActionDSL.g:5555:2: 'workflowAction'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionWorkflowAccess().getWorkflowActionKeyword_0()); 
+            }
+            match(input,91,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionWorkflowAccess().getWorkflowActionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionWorkflow__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionWorkflow__Group__1"
+    // InternalActionDSL.g:5564:1: rule__ActionWorkflow__Group__1 : rule__ActionWorkflow__Group__1__Impl ;
+    public final void rule__ActionWorkflow__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5568:1: ( rule__ActionWorkflow__Group__1__Impl )
+            // InternalActionDSL.g:5569:2: rule__ActionWorkflow__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionWorkflow__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionWorkflow__Group__1"
+
+
+    // $ANTLR start "rule__ActionWorkflow__Group__1__Impl"
+    // InternalActionDSL.g:5575:1: rule__ActionWorkflow__Group__1__Impl : ( ( rule__ActionWorkflow__ActionAssignment_1 ) ) ;
+    public final void rule__ActionWorkflow__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5579:1: ( ( ( rule__ActionWorkflow__ActionAssignment_1 ) ) )
+            // InternalActionDSL.g:5580:1: ( ( rule__ActionWorkflow__ActionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:5580:1: ( ( rule__ActionWorkflow__ActionAssignment_1 ) )
+            // InternalActionDSL.g:5581:2: ( rule__ActionWorkflow__ActionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionWorkflowAccess().getActionAssignment_1()); 
+            }
+            // InternalActionDSL.g:5582:2: ( rule__ActionWorkflow__ActionAssignment_1 )
+            // InternalActionDSL.g:5582:3: rule__ActionWorkflow__ActionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionWorkflow__ActionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionWorkflowAccess().getActionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionWorkflow__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionDatainterchange__Group__0"
+    // InternalActionDSL.g:5591:1: rule__ActionDatainterchange__Group__0 : rule__ActionDatainterchange__Group__0__Impl rule__ActionDatainterchange__Group__1 ;
+    public final void rule__ActionDatainterchange__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5595:1: ( rule__ActionDatainterchange__Group__0__Impl rule__ActionDatainterchange__Group__1 )
+            // InternalActionDSL.g:5596:2: rule__ActionDatainterchange__Group__0__Impl rule__ActionDatainterchange__Group__1
+            {
+            pushFollow(FOLLOW_28);
+            rule__ActionDatainterchange__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionDatainterchange__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDatainterchange__Group__0"
+
+
+    // $ANTLR start "rule__ActionDatainterchange__Group__0__Impl"
+    // InternalActionDSL.g:5603:1: rule__ActionDatainterchange__Group__0__Impl : ( 'datainterchangeAction' ) ;
+    public final void rule__ActionDatainterchange__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5607:1: ( ( 'datainterchangeAction' ) )
+            // InternalActionDSL.g:5608:1: ( 'datainterchangeAction' )
+            {
+            // InternalActionDSL.g:5608:1: ( 'datainterchangeAction' )
+            // InternalActionDSL.g:5609:2: 'datainterchangeAction'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDatainterchangeAccess().getDatainterchangeActionKeyword_0()); 
+            }
+            match(input,92,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDatainterchangeAccess().getDatainterchangeActionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDatainterchange__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionDatainterchange__Group__1"
+    // InternalActionDSL.g:5618:1: rule__ActionDatainterchange__Group__1 : rule__ActionDatainterchange__Group__1__Impl rule__ActionDatainterchange__Group__2 ;
+    public final void rule__ActionDatainterchange__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5622:1: ( rule__ActionDatainterchange__Group__1__Impl rule__ActionDatainterchange__Group__2 )
+            // InternalActionDSL.g:5623:2: rule__ActionDatainterchange__Group__1__Impl rule__ActionDatainterchange__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionDatainterchange__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionDatainterchange__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDatainterchange__Group__1"
+
+
+    // $ANTLR start "rule__ActionDatainterchange__Group__1__Impl"
+    // InternalActionDSL.g:5630:1: rule__ActionDatainterchange__Group__1__Impl : ( ( rule__ActionDatainterchange__ActionAssignment_1 ) ) ;
+    public final void rule__ActionDatainterchange__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5634:1: ( ( ( rule__ActionDatainterchange__ActionAssignment_1 ) ) )
+            // InternalActionDSL.g:5635:1: ( ( rule__ActionDatainterchange__ActionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:5635:1: ( ( rule__ActionDatainterchange__ActionAssignment_1 ) )
+            // InternalActionDSL.g:5636:2: ( rule__ActionDatainterchange__ActionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDatainterchangeAccess().getActionAssignment_1()); 
+            }
+            // InternalActionDSL.g:5637:2: ( rule__ActionDatainterchange__ActionAssignment_1 )
+            // InternalActionDSL.g:5637:3: rule__ActionDatainterchange__ActionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionDatainterchange__ActionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDatainterchangeAccess().getActionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDatainterchange__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionDatainterchange__Group__2"
+    // InternalActionDSL.g:5645:1: rule__ActionDatainterchange__Group__2 : rule__ActionDatainterchange__Group__2__Impl ;
+    public final void rule__ActionDatainterchange__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5649:1: ( rule__ActionDatainterchange__Group__2__Impl )
+            // InternalActionDSL.g:5650:2: rule__ActionDatainterchange__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionDatainterchange__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDatainterchange__Group__2"
+
+
+    // $ANTLR start "rule__ActionDatainterchange__Group__2__Impl"
+    // InternalActionDSL.g:5656:1: rule__ActionDatainterchange__Group__2__Impl : ( ( rule__ActionDatainterchange__DataRefAssignment_2 ) ) ;
+    public final void rule__ActionDatainterchange__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5660:1: ( ( ( rule__ActionDatainterchange__DataRefAssignment_2 ) ) )
+            // InternalActionDSL.g:5661:1: ( ( rule__ActionDatainterchange__DataRefAssignment_2 ) )
+            {
+            // InternalActionDSL.g:5661:1: ( ( rule__ActionDatainterchange__DataRefAssignment_2 ) )
+            // InternalActionDSL.g:5662:2: ( rule__ActionDatainterchange__DataRefAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDatainterchangeAccess().getDataRefAssignment_2()); 
+            }
+            // InternalActionDSL.g:5663:2: ( rule__ActionDatainterchange__DataRefAssignment_2 )
+            // InternalActionDSL.g:5663:3: rule__ActionDatainterchange__DataRefAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionDatainterchange__DataRefAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDatainterchangeAccess().getDataRefAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDatainterchange__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ActionUI__Group__0"
+    // InternalActionDSL.g:5672:1: rule__ActionUI__Group__0 : rule__ActionUI__Group__0__Impl rule__ActionUI__Group__1 ;
+    public final void rule__ActionUI__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5676:1: ( rule__ActionUI__Group__0__Impl rule__ActionUI__Group__1 )
+            // InternalActionDSL.g:5677:2: rule__ActionUI__Group__0__Impl rule__ActionUI__Group__1
+            {
+            pushFollow(FOLLOW_29);
+            rule__ActionUI__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionUI__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionUI__Group__0"
+
+
+    // $ANTLR start "rule__ActionUI__Group__0__Impl"
+    // InternalActionDSL.g:5684:1: rule__ActionUI__Group__0__Impl : ( 'userinterfaceAction' ) ;
+    public final void rule__ActionUI__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5688:1: ( ( 'userinterfaceAction' ) )
+            // InternalActionDSL.g:5689:1: ( 'userinterfaceAction' )
+            {
+            // InternalActionDSL.g:5689:1: ( 'userinterfaceAction' )
+            // InternalActionDSL.g:5690:2: 'userinterfaceAction'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionUIAccess().getUserinterfaceActionKeyword_0()); 
+            }
+            match(input,93,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionUIAccess().getUserinterfaceActionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionUI__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionUI__Group__1"
+    // InternalActionDSL.g:5699:1: rule__ActionUI__Group__1 : rule__ActionUI__Group__1__Impl ;
+    public final void rule__ActionUI__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5703:1: ( rule__ActionUI__Group__1__Impl )
+            // InternalActionDSL.g:5704:2: rule__ActionUI__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionUI__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionUI__Group__1"
+
+
+    // $ANTLR start "rule__ActionUI__Group__1__Impl"
+    // InternalActionDSL.g:5710:1: rule__ActionUI__Group__1__Impl : ( ( rule__ActionUI__ActionAssignment_1 ) ) ;
+    public final void rule__ActionUI__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5714:1: ( ( ( rule__ActionUI__ActionAssignment_1 ) ) )
+            // InternalActionDSL.g:5715:1: ( ( rule__ActionUI__ActionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:5715:1: ( ( rule__ActionUI__ActionAssignment_1 ) )
+            // InternalActionDSL.g:5716:2: ( rule__ActionUI__ActionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionUIAccess().getActionAssignment_1()); 
+            }
+            // InternalActionDSL.g:5717:2: ( rule__ActionUI__ActionAssignment_1 )
+            // InternalActionDSL.g:5717:3: rule__ActionUI__ActionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionUI__ActionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionUIAccess().getActionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionUI__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__0"
+    // InternalActionDSL.g:5726:1: rule__ActionFunction__Group__0 : rule__ActionFunction__Group__0__Impl rule__ActionFunction__Group__1 ;
+    public final void rule__ActionFunction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5730:1: ( rule__ActionFunction__Group__0__Impl rule__ActionFunction__Group__1 )
+            // InternalActionDSL.g:5731:2: rule__ActionFunction__Group__0__Impl rule__ActionFunction__Group__1
+            {
+            pushFollow(FOLLOW_30);
+            rule__ActionFunction__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__0"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__0__Impl"
+    // InternalActionDSL.g:5738:1: rule__ActionFunction__Group__0__Impl : ( 'functionalAction' ) ;
+    public final void rule__ActionFunction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5742:1: ( ( 'functionalAction' ) )
+            // InternalActionDSL.g:5743:1: ( 'functionalAction' )
+            {
+            // InternalActionDSL.g:5743:1: ( 'functionalAction' )
+            // InternalActionDSL.g:5744:2: 'functionalAction'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getFunctionalActionKeyword_0()); 
+            }
+            match(input,94,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getFunctionalActionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__1"
+    // InternalActionDSL.g:5753:1: rule__ActionFunction__Group__1 : rule__ActionFunction__Group__1__Impl rule__ActionFunction__Group__2 ;
+    public final void rule__ActionFunction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5757:1: ( rule__ActionFunction__Group__1__Impl rule__ActionFunction__Group__2 )
+            // InternalActionDSL.g:5758:2: rule__ActionFunction__Group__1__Impl rule__ActionFunction__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionFunction__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__1"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__1__Impl"
+    // InternalActionDSL.g:5765:1: rule__ActionFunction__Group__1__Impl : ( 'group' ) ;
+    public final void rule__ActionFunction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5769:1: ( ( 'group' ) )
+            // InternalActionDSL.g:5770:1: ( 'group' )
+            {
+            // InternalActionDSL.g:5770:1: ( 'group' )
+            // InternalActionDSL.g:5771:2: 'group'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getGroupKeyword_1()); 
+            }
+            match(input,95,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getGroupKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__2"
+    // InternalActionDSL.g:5780:1: rule__ActionFunction__Group__2 : rule__ActionFunction__Group__2__Impl rule__ActionFunction__Group__3 ;
+    public final void rule__ActionFunction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5784:1: ( rule__ActionFunction__Group__2__Impl rule__ActionFunction__Group__3 )
+            // InternalActionDSL.g:5785:2: rule__ActionFunction__Group__2__Impl rule__ActionFunction__Group__3
+            {
+            pushFollow(FOLLOW_31);
+            rule__ActionFunction__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__2"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__2__Impl"
+    // InternalActionDSL.g:5792:1: rule__ActionFunction__Group__2__Impl : ( ( rule__ActionFunction__ActionGroupAssignment_2 ) ) ;
+    public final void rule__ActionFunction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5796:1: ( ( ( rule__ActionFunction__ActionGroupAssignment_2 ) ) )
+            // InternalActionDSL.g:5797:1: ( ( rule__ActionFunction__ActionGroupAssignment_2 ) )
+            {
+            // InternalActionDSL.g:5797:1: ( ( rule__ActionFunction__ActionGroupAssignment_2 ) )
+            // InternalActionDSL.g:5798:2: ( rule__ActionFunction__ActionGroupAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getActionGroupAssignment_2()); 
+            }
+            // InternalActionDSL.g:5799:2: ( rule__ActionFunction__ActionGroupAssignment_2 )
+            // InternalActionDSL.g:5799:3: rule__ActionFunction__ActionGroupAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__ActionGroupAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getActionGroupAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__3"
+    // InternalActionDSL.g:5807:1: rule__ActionFunction__Group__3 : rule__ActionFunction__Group__3__Impl rule__ActionFunction__Group__4 ;
+    public final void rule__ActionFunction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5811:1: ( rule__ActionFunction__Group__3__Impl rule__ActionFunction__Group__4 )
+            // InternalActionDSL.g:5812:2: rule__ActionFunction__Group__3__Impl rule__ActionFunction__Group__4
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionFunction__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__3"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__3__Impl"
+    // InternalActionDSL.g:5819:1: rule__ActionFunction__Group__3__Impl : ( 'canExecute' ) ;
+    public final void rule__ActionFunction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5823:1: ( ( 'canExecute' ) )
+            // InternalActionDSL.g:5824:1: ( 'canExecute' )
+            {
+            // InternalActionDSL.g:5824:1: ( 'canExecute' )
+            // InternalActionDSL.g:5825:2: 'canExecute'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getCanExecuteKeyword_3()); 
+            }
+            match(input,96,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getCanExecuteKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__4"
+    // InternalActionDSL.g:5834:1: rule__ActionFunction__Group__4 : rule__ActionFunction__Group__4__Impl rule__ActionFunction__Group__5 ;
+    public final void rule__ActionFunction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5838:1: ( rule__ActionFunction__Group__4__Impl rule__ActionFunction__Group__5 )
+            // InternalActionDSL.g:5839:2: rule__ActionFunction__Group__4__Impl rule__ActionFunction__Group__5
+            {
+            pushFollow(FOLLOW_32);
+            rule__ActionFunction__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__4"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__4__Impl"
+    // InternalActionDSL.g:5846:1: rule__ActionFunction__Group__4__Impl : ( ( rule__ActionFunction__CanExecuteAssignment_4 ) ) ;
+    public final void rule__ActionFunction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5850:1: ( ( ( rule__ActionFunction__CanExecuteAssignment_4 ) ) )
+            // InternalActionDSL.g:5851:1: ( ( rule__ActionFunction__CanExecuteAssignment_4 ) )
+            {
+            // InternalActionDSL.g:5851:1: ( ( rule__ActionFunction__CanExecuteAssignment_4 ) )
+            // InternalActionDSL.g:5852:2: ( rule__ActionFunction__CanExecuteAssignment_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getCanExecuteAssignment_4()); 
+            }
+            // InternalActionDSL.g:5853:2: ( rule__ActionFunction__CanExecuteAssignment_4 )
+            // InternalActionDSL.g:5853:3: rule__ActionFunction__CanExecuteAssignment_4
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__CanExecuteAssignment_4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getCanExecuteAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__5"
+    // InternalActionDSL.g:5861:1: rule__ActionFunction__Group__5 : rule__ActionFunction__Group__5__Impl ;
+    public final void rule__ActionFunction__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5865:1: ( rule__ActionFunction__Group__5__Impl )
+            // InternalActionDSL.g:5866:2: rule__ActionFunction__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__5"
+
+
+    // $ANTLR start "rule__ActionFunction__Group__5__Impl"
+    // InternalActionDSL.g:5872:1: rule__ActionFunction__Group__5__Impl : ( ( rule__ActionFunction__Alternatives_5 ) ) ;
+    public final void rule__ActionFunction__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5876:1: ( ( ( rule__ActionFunction__Alternatives_5 ) ) )
+            // InternalActionDSL.g:5877:1: ( ( rule__ActionFunction__Alternatives_5 ) )
+            {
+            // InternalActionDSL.g:5877:1: ( ( rule__ActionFunction__Alternatives_5 ) )
+            // InternalActionDSL.g:5878:2: ( rule__ActionFunction__Alternatives_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getAlternatives_5()); 
+            }
+            // InternalActionDSL.g:5879:2: ( rule__ActionFunction__Alternatives_5 )
+            // InternalActionDSL.g:5879:3: rule__ActionFunction__Alternatives_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Alternatives_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getAlternatives_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0__0"
+    // InternalActionDSL.g:5888:1: rule__ActionFunction__Group_5_0__0 : rule__ActionFunction__Group_5_0__0__Impl rule__ActionFunction__Group_5_0__1 ;
+    public final void rule__ActionFunction__Group_5_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5892:1: ( rule__ActionFunction__Group_5_0__0__Impl rule__ActionFunction__Group_5_0__1 )
+            // InternalActionDSL.g:5893:2: rule__ActionFunction__Group_5_0__0__Impl rule__ActionFunction__Group_5_0__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionFunction__Group_5_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0__0"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0__0__Impl"
+    // InternalActionDSL.g:5900:1: rule__ActionFunction__Group_5_0__0__Impl : ( ( rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0 ) ) ;
+    public final void rule__ActionFunction__Group_5_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5904:1: ( ( ( rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0 ) ) )
+            // InternalActionDSL.g:5905:1: ( ( rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0 ) )
+            {
+            // InternalActionDSL.g:5905:1: ( ( rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0 ) )
+            // InternalActionDSL.g:5906:2: ( rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateAssignment_5_0_0()); 
+            }
+            // InternalActionDSL.g:5907:2: ( rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0 )
+            // InternalActionDSL.g:5907:3: rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateAssignment_5_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0__0__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0__1"
+    // InternalActionDSL.g:5915:1: rule__ActionFunction__Group_5_0__1 : rule__ActionFunction__Group_5_0__1__Impl rule__ActionFunction__Group_5_0__2 ;
+    public final void rule__ActionFunction__Group_5_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5919:1: ( rule__ActionFunction__Group_5_0__1__Impl rule__ActionFunction__Group_5_0__2 )
+            // InternalActionDSL.g:5920:2: rule__ActionFunction__Group_5_0__1__Impl rule__ActionFunction__Group_5_0__2
+            {
+            pushFollow(FOLLOW_33);
+            rule__ActionFunction__Group_5_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0__1"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0__1__Impl"
+    // InternalActionDSL.g:5927:1: rule__ActionFunction__Group_5_0__1__Impl : ( ( rule__ActionFunction__ExecuteImmediateAssignment_5_0_1 ) ) ;
+    public final void rule__ActionFunction__Group_5_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5931:1: ( ( ( rule__ActionFunction__ExecuteImmediateAssignment_5_0_1 ) ) )
+            // InternalActionDSL.g:5932:1: ( ( rule__ActionFunction__ExecuteImmediateAssignment_5_0_1 ) )
+            {
+            // InternalActionDSL.g:5932:1: ( ( rule__ActionFunction__ExecuteImmediateAssignment_5_0_1 ) )
+            // InternalActionDSL.g:5933:2: ( rule__ActionFunction__ExecuteImmediateAssignment_5_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getExecuteImmediateAssignment_5_0_1()); 
+            }
+            // InternalActionDSL.g:5934:2: ( rule__ActionFunction__ExecuteImmediateAssignment_5_0_1 )
+            // InternalActionDSL.g:5934:3: rule__ActionFunction__ExecuteImmediateAssignment_5_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__ExecuteImmediateAssignment_5_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getExecuteImmediateAssignment_5_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0__1__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0__2"
+    // InternalActionDSL.g:5942:1: rule__ActionFunction__Group_5_0__2 : rule__ActionFunction__Group_5_0__2__Impl ;
+    public final void rule__ActionFunction__Group_5_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5946:1: ( rule__ActionFunction__Group_5_0__2__Impl )
+            // InternalActionDSL.g:5947:2: rule__ActionFunction__Group_5_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0__2"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0__2__Impl"
+    // InternalActionDSL.g:5953:1: rule__ActionFunction__Group_5_0__2__Impl : ( ( rule__ActionFunction__Group_5_0_2__0 )? ) ;
+    public final void rule__ActionFunction__Group_5_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5957:1: ( ( ( rule__ActionFunction__Group_5_0_2__0 )? ) )
+            // InternalActionDSL.g:5958:1: ( ( rule__ActionFunction__Group_5_0_2__0 )? )
+            {
+            // InternalActionDSL.g:5958:1: ( ( rule__ActionFunction__Group_5_0_2__0 )? )
+            // InternalActionDSL.g:5959:2: ( rule__ActionFunction__Group_5_0_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getGroup_5_0_2()); 
+            }
+            // InternalActionDSL.g:5960:2: ( rule__ActionFunction__Group_5_0_2__0 )?
+            int alt66=2;
+            int LA66_0 = input.LA(1);
+
+            if ( (LA66_0==132) ) {
+                alt66=1;
+            }
+            switch (alt66) {
+                case 1 :
+                    // InternalActionDSL.g:5960:3: rule__ActionFunction__Group_5_0_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionFunction__Group_5_0_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getGroup_5_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0__2__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__0"
+    // InternalActionDSL.g:5969:1: rule__ActionFunction__Group_5_0_2__0 : rule__ActionFunction__Group_5_0_2__0__Impl rule__ActionFunction__Group_5_0_2__1 ;
+    public final void rule__ActionFunction__Group_5_0_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5973:1: ( rule__ActionFunction__Group_5_0_2__0__Impl rule__ActionFunction__Group_5_0_2__1 )
+            // InternalActionDSL.g:5974:2: rule__ActionFunction__Group_5_0_2__0__Impl rule__ActionFunction__Group_5_0_2__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionFunction__Group_5_0_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__0"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__0__Impl"
+    // InternalActionDSL.g:5981:1: rule__ActionFunction__Group_5_0_2__0__Impl : ( ( rule__ActionFunction__HasMessageAssignment_5_0_2_0 ) ) ;
+    public final void rule__ActionFunction__Group_5_0_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:5985:1: ( ( ( rule__ActionFunction__HasMessageAssignment_5_0_2_0 ) ) )
+            // InternalActionDSL.g:5986:1: ( ( rule__ActionFunction__HasMessageAssignment_5_0_2_0 ) )
+            {
+            // InternalActionDSL.g:5986:1: ( ( rule__ActionFunction__HasMessageAssignment_5_0_2_0 ) )
+            // InternalActionDSL.g:5987:2: ( rule__ActionFunction__HasMessageAssignment_5_0_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasMessageAssignment_5_0_2_0()); 
+            }
+            // InternalActionDSL.g:5988:2: ( rule__ActionFunction__HasMessageAssignment_5_0_2_0 )
+            // InternalActionDSL.g:5988:3: rule__ActionFunction__HasMessageAssignment_5_0_2_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__HasMessageAssignment_5_0_2_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasMessageAssignment_5_0_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__0__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__1"
+    // InternalActionDSL.g:5996:1: rule__ActionFunction__Group_5_0_2__1 : rule__ActionFunction__Group_5_0_2__1__Impl rule__ActionFunction__Group_5_0_2__2 ;
+    public final void rule__ActionFunction__Group_5_0_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6000:1: ( rule__ActionFunction__Group_5_0_2__1__Impl rule__ActionFunction__Group_5_0_2__2 )
+            // InternalActionDSL.g:6001:2: rule__ActionFunction__Group_5_0_2__1__Impl rule__ActionFunction__Group_5_0_2__2
+            {
+            pushFollow(FOLLOW_34);
+            rule__ActionFunction__Group_5_0_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0_2__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__1"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__1__Impl"
+    // InternalActionDSL.g:6008:1: rule__ActionFunction__Group_5_0_2__1__Impl : ( ( rule__ActionFunction__MessageCategoryAssignment_5_0_2_1 ) ) ;
+    public final void rule__ActionFunction__Group_5_0_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6012:1: ( ( ( rule__ActionFunction__MessageCategoryAssignment_5_0_2_1 ) ) )
+            // InternalActionDSL.g:6013:1: ( ( rule__ActionFunction__MessageCategoryAssignment_5_0_2_1 ) )
+            {
+            // InternalActionDSL.g:6013:1: ( ( rule__ActionFunction__MessageCategoryAssignment_5_0_2_1 ) )
+            // InternalActionDSL.g:6014:2: ( rule__ActionFunction__MessageCategoryAssignment_5_0_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_0_2_1()); 
+            }
+            // InternalActionDSL.g:6015:2: ( rule__ActionFunction__MessageCategoryAssignment_5_0_2_1 )
+            // InternalActionDSL.g:6015:3: rule__ActionFunction__MessageCategoryAssignment_5_0_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__MessageCategoryAssignment_5_0_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_0_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__1__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__2"
+    // InternalActionDSL.g:6023:1: rule__ActionFunction__Group_5_0_2__2 : rule__ActionFunction__Group_5_0_2__2__Impl rule__ActionFunction__Group_5_0_2__3 ;
+    public final void rule__ActionFunction__Group_5_0_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6027:1: ( rule__ActionFunction__Group_5_0_2__2__Impl rule__ActionFunction__Group_5_0_2__3 )
+            // InternalActionDSL.g:6028:2: rule__ActionFunction__Group_5_0_2__2__Impl rule__ActionFunction__Group_5_0_2__3
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionFunction__Group_5_0_2__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0_2__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__2"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__2__Impl"
+    // InternalActionDSL.g:6035:1: rule__ActionFunction__Group_5_0_2__2__Impl : ( 'onFailMessage' ) ;
+    public final void rule__ActionFunction__Group_5_0_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6039:1: ( ( 'onFailMessage' ) )
+            // InternalActionDSL.g:6040:1: ( 'onFailMessage' )
+            {
+            // InternalActionDSL.g:6040:1: ( 'onFailMessage' )
+            // InternalActionDSL.g:6041:2: 'onFailMessage'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnFailMessageKeyword_5_0_2_2()); 
+            }
+            match(input,97,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnFailMessageKeyword_5_0_2_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__2__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__3"
+    // InternalActionDSL.g:6050:1: rule__ActionFunction__Group_5_0_2__3 : rule__ActionFunction__Group_5_0_2__3__Impl rule__ActionFunction__Group_5_0_2__4 ;
+    public final void rule__ActionFunction__Group_5_0_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6054:1: ( rule__ActionFunction__Group_5_0_2__3__Impl rule__ActionFunction__Group_5_0_2__4 )
+            // InternalActionDSL.g:6055:2: rule__ActionFunction__Group_5_0_2__3__Impl rule__ActionFunction__Group_5_0_2__4
+            {
+            pushFollow(FOLLOW_35);
+            rule__ActionFunction__Group_5_0_2__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0_2__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__3"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__3__Impl"
+    // InternalActionDSL.g:6062:1: rule__ActionFunction__Group_5_0_2__3__Impl : ( ( rule__ActionFunction__OnFailMessageAssignment_5_0_2_3 ) ) ;
+    public final void rule__ActionFunction__Group_5_0_2__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6066:1: ( ( ( rule__ActionFunction__OnFailMessageAssignment_5_0_2_3 ) ) )
+            // InternalActionDSL.g:6067:1: ( ( rule__ActionFunction__OnFailMessageAssignment_5_0_2_3 ) )
+            {
+            // InternalActionDSL.g:6067:1: ( ( rule__ActionFunction__OnFailMessageAssignment_5_0_2_3 ) )
+            // InternalActionDSL.g:6068:2: ( rule__ActionFunction__OnFailMessageAssignment_5_0_2_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnFailMessageAssignment_5_0_2_3()); 
+            }
+            // InternalActionDSL.g:6069:2: ( rule__ActionFunction__OnFailMessageAssignment_5_0_2_3 )
+            // InternalActionDSL.g:6069:3: rule__ActionFunction__OnFailMessageAssignment_5_0_2_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__OnFailMessageAssignment_5_0_2_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnFailMessageAssignment_5_0_2_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__3__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__4"
+    // InternalActionDSL.g:6077:1: rule__ActionFunction__Group_5_0_2__4 : rule__ActionFunction__Group_5_0_2__4__Impl ;
+    public final void rule__ActionFunction__Group_5_0_2__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6081:1: ( rule__ActionFunction__Group_5_0_2__4__Impl )
+            // InternalActionDSL.g:6082:2: rule__ActionFunction__Group_5_0_2__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0_2__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__4"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2__4__Impl"
+    // InternalActionDSL.g:6088:1: rule__ActionFunction__Group_5_0_2__4__Impl : ( ( rule__ActionFunction__Group_5_0_2_4__0 )? ) ;
+    public final void rule__ActionFunction__Group_5_0_2__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6092:1: ( ( ( rule__ActionFunction__Group_5_0_2_4__0 )? ) )
+            // InternalActionDSL.g:6093:1: ( ( rule__ActionFunction__Group_5_0_2_4__0 )? )
+            {
+            // InternalActionDSL.g:6093:1: ( ( rule__ActionFunction__Group_5_0_2_4__0 )? )
+            // InternalActionDSL.g:6094:2: ( rule__ActionFunction__Group_5_0_2_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getGroup_5_0_2_4()); 
+            }
+            // InternalActionDSL.g:6095:2: ( rule__ActionFunction__Group_5_0_2_4__0 )?
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==133) ) {
+                alt67=1;
+            }
+            switch (alt67) {
+                case 1 :
+                    // InternalActionDSL.g:6095:3: rule__ActionFunction__Group_5_0_2_4__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionFunction__Group_5_0_2_4__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getGroup_5_0_2_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2__4__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2_4__0"
+    // InternalActionDSL.g:6104:1: rule__ActionFunction__Group_5_0_2_4__0 : rule__ActionFunction__Group_5_0_2_4__0__Impl rule__ActionFunction__Group_5_0_2_4__1 ;
+    public final void rule__ActionFunction__Group_5_0_2_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6108:1: ( rule__ActionFunction__Group_5_0_2_4__0__Impl rule__ActionFunction__Group_5_0_2_4__1 )
+            // InternalActionDSL.g:6109:2: rule__ActionFunction__Group_5_0_2_4__0__Impl rule__ActionFunction__Group_5_0_2_4__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionFunction__Group_5_0_2_4__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0_2_4__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2_4__0"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2_4__0__Impl"
+    // InternalActionDSL.g:6116:1: rule__ActionFunction__Group_5_0_2_4__0__Impl : ( ( rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0 ) ) ;
+    public final void rule__ActionFunction__Group_5_0_2_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6120:1: ( ( ( rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0 ) ) )
+            // InternalActionDSL.g:6121:1: ( ( rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0 ) )
+            {
+            // InternalActionDSL.g:6121:1: ( ( rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0 ) )
+            // InternalActionDSL.g:6122:2: ( rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasSuccessMessageAssignment_5_0_2_4_0()); 
+            }
+            // InternalActionDSL.g:6123:2: ( rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0 )
+            // InternalActionDSL.g:6123:3: rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasSuccessMessageAssignment_5_0_2_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2_4__0__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2_4__1"
+    // InternalActionDSL.g:6131:1: rule__ActionFunction__Group_5_0_2_4__1 : rule__ActionFunction__Group_5_0_2_4__1__Impl ;
+    public final void rule__ActionFunction__Group_5_0_2_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6135:1: ( rule__ActionFunction__Group_5_0_2_4__1__Impl )
+            // InternalActionDSL.g:6136:2: rule__ActionFunction__Group_5_0_2_4__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_0_2_4__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2_4__1"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_0_2_4__1__Impl"
+    // InternalActionDSL.g:6142:1: rule__ActionFunction__Group_5_0_2_4__1__Impl : ( ( rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1 ) ) ;
+    public final void rule__ActionFunction__Group_5_0_2_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6146:1: ( ( ( rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1 ) ) )
+            // InternalActionDSL.g:6147:1: ( ( rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1 ) )
+            {
+            // InternalActionDSL.g:6147:1: ( ( rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1 ) )
+            // InternalActionDSL.g:6148:2: ( rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnSuccessMessageAssignment_5_0_2_4_1()); 
+            }
+            // InternalActionDSL.g:6149:2: ( rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1 )
+            // InternalActionDSL.g:6149:3: rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnSuccessMessageAssignment_5_0_2_4_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_0_2_4__1__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1__0"
+    // InternalActionDSL.g:6158:1: rule__ActionFunction__Group_5_1__0 : rule__ActionFunction__Group_5_1__0__Impl rule__ActionFunction__Group_5_1__1 ;
+    public final void rule__ActionFunction__Group_5_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6162:1: ( rule__ActionFunction__Group_5_1__0__Impl rule__ActionFunction__Group_5_1__1 )
+            // InternalActionDSL.g:6163:2: rule__ActionFunction__Group_5_1__0__Impl rule__ActionFunction__Group_5_1__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionFunction__Group_5_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1__0"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1__0__Impl"
+    // InternalActionDSL.g:6170:1: rule__ActionFunction__Group_5_1__0__Impl : ( ( rule__ActionFunction__HasExecuteLaterAssignment_5_1_0 ) ) ;
+    public final void rule__ActionFunction__Group_5_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6174:1: ( ( ( rule__ActionFunction__HasExecuteLaterAssignment_5_1_0 ) ) )
+            // InternalActionDSL.g:6175:1: ( ( rule__ActionFunction__HasExecuteLaterAssignment_5_1_0 ) )
+            {
+            // InternalActionDSL.g:6175:1: ( ( rule__ActionFunction__HasExecuteLaterAssignment_5_1_0 ) )
+            // InternalActionDSL.g:6176:2: ( rule__ActionFunction__HasExecuteLaterAssignment_5_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasExecuteLaterAssignment_5_1_0()); 
+            }
+            // InternalActionDSL.g:6177:2: ( rule__ActionFunction__HasExecuteLaterAssignment_5_1_0 )
+            // InternalActionDSL.g:6177:3: rule__ActionFunction__HasExecuteLaterAssignment_5_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__HasExecuteLaterAssignment_5_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasExecuteLaterAssignment_5_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1__0__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1__1"
+    // InternalActionDSL.g:6185:1: rule__ActionFunction__Group_5_1__1 : rule__ActionFunction__Group_5_1__1__Impl rule__ActionFunction__Group_5_1__2 ;
+    public final void rule__ActionFunction__Group_5_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6189:1: ( rule__ActionFunction__Group_5_1__1__Impl rule__ActionFunction__Group_5_1__2 )
+            // InternalActionDSL.g:6190:2: rule__ActionFunction__Group_5_1__1__Impl rule__ActionFunction__Group_5_1__2
+            {
+            pushFollow(FOLLOW_33);
+            rule__ActionFunction__Group_5_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_1__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1__1"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1__1__Impl"
+    // InternalActionDSL.g:6197:1: rule__ActionFunction__Group_5_1__1__Impl : ( ( rule__ActionFunction__ExecuteLaterAssignment_5_1_1 ) ) ;
+    public final void rule__ActionFunction__Group_5_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6201:1: ( ( ( rule__ActionFunction__ExecuteLaterAssignment_5_1_1 ) ) )
+            // InternalActionDSL.g:6202:1: ( ( rule__ActionFunction__ExecuteLaterAssignment_5_1_1 ) )
+            {
+            // InternalActionDSL.g:6202:1: ( ( rule__ActionFunction__ExecuteLaterAssignment_5_1_1 ) )
+            // InternalActionDSL.g:6203:2: ( rule__ActionFunction__ExecuteLaterAssignment_5_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getExecuteLaterAssignment_5_1_1()); 
+            }
+            // InternalActionDSL.g:6204:2: ( rule__ActionFunction__ExecuteLaterAssignment_5_1_1 )
+            // InternalActionDSL.g:6204:3: rule__ActionFunction__ExecuteLaterAssignment_5_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__ExecuteLaterAssignment_5_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getExecuteLaterAssignment_5_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1__1__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1__2"
+    // InternalActionDSL.g:6212:1: rule__ActionFunction__Group_5_1__2 : rule__ActionFunction__Group_5_1__2__Impl ;
+    public final void rule__ActionFunction__Group_5_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6216:1: ( rule__ActionFunction__Group_5_1__2__Impl )
+            // InternalActionDSL.g:6217:2: rule__ActionFunction__Group_5_1__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_1__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1__2"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1__2__Impl"
+    // InternalActionDSL.g:6223:1: rule__ActionFunction__Group_5_1__2__Impl : ( ( rule__ActionFunction__Group_5_1_2__0 )? ) ;
+    public final void rule__ActionFunction__Group_5_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6227:1: ( ( ( rule__ActionFunction__Group_5_1_2__0 )? ) )
+            // InternalActionDSL.g:6228:1: ( ( rule__ActionFunction__Group_5_1_2__0 )? )
+            {
+            // InternalActionDSL.g:6228:1: ( ( rule__ActionFunction__Group_5_1_2__0 )? )
+            // InternalActionDSL.g:6229:2: ( rule__ActionFunction__Group_5_1_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getGroup_5_1_2()); 
+            }
+            // InternalActionDSL.g:6230:2: ( rule__ActionFunction__Group_5_1_2__0 )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
+
+            if ( (LA68_0==132) ) {
+                alt68=1;
+            }
+            switch (alt68) {
+                case 1 :
+                    // InternalActionDSL.g:6230:3: rule__ActionFunction__Group_5_1_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ActionFunction__Group_5_1_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getGroup_5_1_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1__2__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1_2__0"
+    // InternalActionDSL.g:6239:1: rule__ActionFunction__Group_5_1_2__0 : rule__ActionFunction__Group_5_1_2__0__Impl rule__ActionFunction__Group_5_1_2__1 ;
+    public final void rule__ActionFunction__Group_5_1_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6243:1: ( rule__ActionFunction__Group_5_1_2__0__Impl rule__ActionFunction__Group_5_1_2__1 )
+            // InternalActionDSL.g:6244:2: rule__ActionFunction__Group_5_1_2__0__Impl rule__ActionFunction__Group_5_1_2__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionFunction__Group_5_1_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_1_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1_2__0"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1_2__0__Impl"
+    // InternalActionDSL.g:6251:1: rule__ActionFunction__Group_5_1_2__0__Impl : ( ( rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0 ) ) ;
+    public final void rule__ActionFunction__Group_5_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6255:1: ( ( ( rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0 ) ) )
+            // InternalActionDSL.g:6256:1: ( ( rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0 ) )
+            {
+            // InternalActionDSL.g:6256:1: ( ( rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0 ) )
+            // InternalActionDSL.g:6257:2: ( rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasStartedMessageAssignment_5_1_2_0()); 
+            }
+            // InternalActionDSL.g:6258:2: ( rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0 )
+            // InternalActionDSL.g:6258:3: rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasStartedMessageAssignment_5_1_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1_2__0__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1_2__1"
+    // InternalActionDSL.g:6266:1: rule__ActionFunction__Group_5_1_2__1 : rule__ActionFunction__Group_5_1_2__1__Impl rule__ActionFunction__Group_5_1_2__2 ;
+    public final void rule__ActionFunction__Group_5_1_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6270:1: ( rule__ActionFunction__Group_5_1_2__1__Impl rule__ActionFunction__Group_5_1_2__2 )
+            // InternalActionDSL.g:6271:2: rule__ActionFunction__Group_5_1_2__1__Impl rule__ActionFunction__Group_5_1_2__2
+            {
+            pushFollow(FOLLOW_36);
+            rule__ActionFunction__Group_5_1_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_1_2__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1_2__1"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1_2__1__Impl"
+    // InternalActionDSL.g:6278:1: rule__ActionFunction__Group_5_1_2__1__Impl : ( ( rule__ActionFunction__MessageCategoryAssignment_5_1_2_1 ) ) ;
+    public final void rule__ActionFunction__Group_5_1_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6282:1: ( ( ( rule__ActionFunction__MessageCategoryAssignment_5_1_2_1 ) ) )
+            // InternalActionDSL.g:6283:1: ( ( rule__ActionFunction__MessageCategoryAssignment_5_1_2_1 ) )
+            {
+            // InternalActionDSL.g:6283:1: ( ( rule__ActionFunction__MessageCategoryAssignment_5_1_2_1 ) )
+            // InternalActionDSL.g:6284:2: ( rule__ActionFunction__MessageCategoryAssignment_5_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_1_2_1()); 
+            }
+            // InternalActionDSL.g:6285:2: ( rule__ActionFunction__MessageCategoryAssignment_5_1_2_1 )
+            // InternalActionDSL.g:6285:3: rule__ActionFunction__MessageCategoryAssignment_5_1_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__MessageCategoryAssignment_5_1_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getMessageCategoryAssignment_5_1_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1_2__1__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1_2__2"
+    // InternalActionDSL.g:6293:1: rule__ActionFunction__Group_5_1_2__2 : rule__ActionFunction__Group_5_1_2__2__Impl rule__ActionFunction__Group_5_1_2__3 ;
+    public final void rule__ActionFunction__Group_5_1_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6297:1: ( rule__ActionFunction__Group_5_1_2__2__Impl rule__ActionFunction__Group_5_1_2__3 )
+            // InternalActionDSL.g:6298:2: rule__ActionFunction__Group_5_1_2__2__Impl rule__ActionFunction__Group_5_1_2__3
+            {
+            pushFollow(FOLLOW_7);
+            rule__ActionFunction__Group_5_1_2__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_1_2__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1_2__2"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1_2__2__Impl"
+    // InternalActionDSL.g:6305:1: rule__ActionFunction__Group_5_1_2__2__Impl : ( 'onStartedMessage' ) ;
+    public final void rule__ActionFunction__Group_5_1_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6309:1: ( ( 'onStartedMessage' ) )
+            // InternalActionDSL.g:6310:1: ( 'onStartedMessage' )
+            {
+            // InternalActionDSL.g:6310:1: ( 'onStartedMessage' )
+            // InternalActionDSL.g:6311:2: 'onStartedMessage'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnStartedMessageKeyword_5_1_2_2()); 
+            }
+            match(input,98,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnStartedMessageKeyword_5_1_2_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1_2__2__Impl"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1_2__3"
+    // InternalActionDSL.g:6320:1: rule__ActionFunction__Group_5_1_2__3 : rule__ActionFunction__Group_5_1_2__3__Impl ;
+    public final void rule__ActionFunction__Group_5_1_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6324:1: ( rule__ActionFunction__Group_5_1_2__3__Impl )
+            // InternalActionDSL.g:6325:2: rule__ActionFunction__Group_5_1_2__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__Group_5_1_2__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1_2__3"
+
+
+    // $ANTLR start "rule__ActionFunction__Group_5_1_2__3__Impl"
+    // InternalActionDSL.g:6331:1: rule__ActionFunction__Group_5_1_2__3__Impl : ( ( rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3 ) ) ;
+    public final void rule__ActionFunction__Group_5_1_2__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6335:1: ( ( ( rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3 ) ) )
+            // InternalActionDSL.g:6336:1: ( ( rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3 ) )
+            {
+            // InternalActionDSL.g:6336:1: ( ( rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3 ) )
+            // InternalActionDSL.g:6337:2: ( rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnStartedMessageAssignment_5_1_2_3()); 
+            }
+            // InternalActionDSL.g:6338:2: ( rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3 )
+            // InternalActionDSL.g:6338:3: rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnStartedMessageAssignment_5_1_2_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__Group_5_1_2__3__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__0"
+    // InternalActionDSL.g:6347:1: rule__XImportDeclaration__Group__0 : rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 ;
+    public final void rule__XImportDeclaration__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6351:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
+            // InternalActionDSL.g:6352:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
+            {
+            pushFollow(FOLLOW_37);
+            rule__XImportDeclaration__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group__0"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__0__Impl"
+    // InternalActionDSL.g:6359:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
+    public final void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6363:1: ( ( () ) )
+            // InternalActionDSL.g:6364:1: ( () )
+            {
+            // InternalActionDSL.g:6364:1: ( () )
+            // InternalActionDSL.g:6365:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); 
+            }
+            // InternalActionDSL.g:6366:2: ()
+            // InternalActionDSL.g:6366:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__1"
+    // InternalActionDSL.g:6374:1: rule__XImportDeclaration__Group__1 : rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 ;
+    public final void rule__XImportDeclaration__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6378:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
+            // InternalActionDSL.g:6379:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
+            {
+            pushFollow(FOLLOW_38);
+            rule__XImportDeclaration__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group__1"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__1__Impl"
+    // InternalActionDSL.g:6386:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
+    public final void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6390:1: ( ( 'import' ) )
+            // InternalActionDSL.g:6391:1: ( 'import' )
+            {
+            // InternalActionDSL.g:6391:1: ( 'import' )
+            // InternalActionDSL.g:6392:2: 'import'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); 
+            }
+            match(input,49,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__2"
+    // InternalActionDSL.g:6401:1: rule__XImportDeclaration__Group__2 : rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 ;
+    public final void rule__XImportDeclaration__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6405:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
+            // InternalActionDSL.g:6406:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
+            {
+            pushFollow(FOLLOW_39);
+            rule__XImportDeclaration__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group__2"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__2__Impl"
+    // InternalActionDSL.g:6413:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
+    public final void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6417:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
+            // InternalActionDSL.g:6418:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            {
+            // InternalActionDSL.g:6418:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalActionDSL.g:6419:2: ( rule__XImportDeclaration__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); 
+            }
+            // InternalActionDSL.g:6420:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalActionDSL.g:6420:3: rule__XImportDeclaration__Alternatives_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Alternatives_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__3"
+    // InternalActionDSL.g:6428:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
+    public final void rule__XImportDeclaration__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6432:1: ( rule__XImportDeclaration__Group__3__Impl )
+            // InternalActionDSL.g:6433:2: rule__XImportDeclaration__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group__3"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__3__Impl"
+    // InternalActionDSL.g:6439:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
+    public final void rule__XImportDeclaration__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6443:1: ( ( ( ';' )? ) )
+            // InternalActionDSL.g:6444:1: ( ( ';' )? )
+            {
+            // InternalActionDSL.g:6444:1: ( ( ';' )? )
+            // InternalActionDSL.g:6445:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); 
+            }
+            // InternalActionDSL.g:6446:2: ( ';' )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
+
+            if ( (LA69_0==99) ) {
+                alt69=1;
+            }
+            switch (alt69) {
+                case 1 :
+                    // InternalActionDSL.g:6446:3: ';'
+                    {
+                    match(input,99,FOLLOW_2); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_0__0"
+    // InternalActionDSL.g:6455:1: rule__XImportDeclaration__Group_2_0__0 : rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 ;
+    public final void rule__XImportDeclaration__Group_2_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6459:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
+            // InternalActionDSL.g:6460:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
+            {
+            pushFollow(FOLLOW_40);
+            rule__XImportDeclaration__Group_2_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group_2_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_0__0"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_0__0__Impl"
+    // InternalActionDSL.g:6467:1: rule__XImportDeclaration__Group_2_0__0__Impl : ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) ;
+    public final void rule__XImportDeclaration__Group_2_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6471:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
+            // InternalActionDSL.g:6472:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            {
+            // InternalActionDSL.g:6472:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalActionDSL.g:6473:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); 
+            }
+            // InternalActionDSL.g:6474:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalActionDSL.g:6474:3: rule__XImportDeclaration__StaticAssignment_2_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__StaticAssignment_2_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_0__0__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_0__1"
+    // InternalActionDSL.g:6482:1: rule__XImportDeclaration__Group_2_0__1 : rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 ;
+    public final void rule__XImportDeclaration__Group_2_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6486:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
+            // InternalActionDSL.g:6487:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
+            {
+            pushFollow(FOLLOW_40);
+            rule__XImportDeclaration__Group_2_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group_2_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_0__1"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_0__1__Impl"
+    // InternalActionDSL.g:6494:1: rule__XImportDeclaration__Group_2_0__1__Impl : ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) ;
+    public final void rule__XImportDeclaration__Group_2_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6498:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
+            // InternalActionDSL.g:6499:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            {
+            // InternalActionDSL.g:6499:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalActionDSL.g:6500:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); 
+            }
+            // InternalActionDSL.g:6501:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            int alt70=2;
+            int LA70_0 = input.LA(1);
+
+            if ( (LA70_0==50) ) {
+                alt70=1;
+            }
+            switch (alt70) {
+                case 1 :
+                    // InternalActionDSL.g:6501:3: rule__XImportDeclaration__ExtensionAssignment_2_0_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XImportDeclaration__ExtensionAssignment_2_0_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_0__1__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_0__2"
+    // InternalActionDSL.g:6509:1: rule__XImportDeclaration__Group_2_0__2 : rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 ;
+    public final void rule__XImportDeclaration__Group_2_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6513:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
+            // InternalActionDSL.g:6514:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
+            {
+            pushFollow(FOLLOW_41);
+            rule__XImportDeclaration__Group_2_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group_2_0__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_0__2"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_0__2__Impl"
+    // InternalActionDSL.g:6521:1: rule__XImportDeclaration__Group_2_0__2__Impl : ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) ;
+    public final void rule__XImportDeclaration__Group_2_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6525:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
+            // InternalActionDSL.g:6526:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            {
+            // InternalActionDSL.g:6526:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalActionDSL.g:6527:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); 
+            }
+            // InternalActionDSL.g:6528:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalActionDSL.g:6528:3: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__ImportedTypeAssignment_2_0_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_0__2__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_0__3"
+    // InternalActionDSL.g:6536:1: rule__XImportDeclaration__Group_2_0__3 : rule__XImportDeclaration__Group_2_0__3__Impl ;
+    public final void rule__XImportDeclaration__Group_2_0__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6540:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
+            // InternalActionDSL.g:6541:2: rule__XImportDeclaration__Group_2_0__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group_2_0__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_0__3"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_0__3__Impl"
+    // InternalActionDSL.g:6547:1: rule__XImportDeclaration__Group_2_0__3__Impl : ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) ;
+    public final void rule__XImportDeclaration__Group_2_0__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6551:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
+            // InternalActionDSL.g:6552:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            {
+            // InternalActionDSL.g:6552:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalActionDSL.g:6553:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); 
+            }
+            // InternalActionDSL.g:6554:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalActionDSL.g:6554:3: rule__XImportDeclaration__Alternatives_2_0_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Alternatives_2_0_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_0__3__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_3__0"
+    // InternalActionDSL.g:6563:1: rule__XImportDeclaration__Group_2_3__0 : rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 ;
+    public final void rule__XImportDeclaration__Group_2_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6567:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
+            // InternalActionDSL.g:6568:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__XImportDeclaration__Group_2_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group_2_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_3__0"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_3__0__Impl"
+    // InternalActionDSL.g:6575:1: rule__XImportDeclaration__Group_2_3__0__Impl : ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) ;
+    public final void rule__XImportDeclaration__Group_2_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6579:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
+            // InternalActionDSL.g:6580:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            {
+            // InternalActionDSL.g:6580:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalActionDSL.g:6581:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); 
+            }
+            // InternalActionDSL.g:6582:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalActionDSL.g:6582:3: rule__XImportDeclaration__FqnImportAssignment_2_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__FqnImportAssignment_2_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_3__0__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_3__1"
+    // InternalActionDSL.g:6590:1: rule__XImportDeclaration__Group_2_3__1 : rule__XImportDeclaration__Group_2_3__1__Impl ;
+    public final void rule__XImportDeclaration__Group_2_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6594:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
+            // InternalActionDSL.g:6595:2: rule__XImportDeclaration__Group_2_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group_2_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_3__1"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_3__1__Impl"
+    // InternalActionDSL.g:6601:1: rule__XImportDeclaration__Group_2_3__1__Impl : ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) ;
+    public final void rule__XImportDeclaration__Group_2_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6605:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
+            // InternalActionDSL.g:6606:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            {
+            // InternalActionDSL.g:6606:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalActionDSL.g:6607:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); 
+            }
+            // InternalActionDSL.g:6608:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalActionDSL.g:6608:3: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_3__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group__0"
+    // InternalActionDSL.g:6617:1: rule__XAnnotation__Group__0 : rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 ;
+    public final void rule__XAnnotation__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6621:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
+            // InternalActionDSL.g:6622:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
+            {
+            pushFollow(FOLLOW_42);
+            rule__XAnnotation__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group__0"
+
+
+    // $ANTLR start "rule__XAnnotation__Group__0__Impl"
+    // InternalActionDSL.g:6629:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
+    public final void rule__XAnnotation__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6633:1: ( ( () ) )
+            // InternalActionDSL.g:6634:1: ( () )
+            {
+            // InternalActionDSL.g:6634:1: ( () )
+            // InternalActionDSL.g:6635:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); 
+            }
+            // InternalActionDSL.g:6636:2: ()
+            // InternalActionDSL.g:6636:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group__1"
+    // InternalActionDSL.g:6644:1: rule__XAnnotation__Group__1 : rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 ;
+    public final void rule__XAnnotation__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6648:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
+            // InternalActionDSL.g:6649:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__XAnnotation__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group__1"
+
+
+    // $ANTLR start "rule__XAnnotation__Group__1__Impl"
+    // InternalActionDSL.g:6656:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
+    public final void rule__XAnnotation__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6660:1: ( ( '@' ) )
+            // InternalActionDSL.g:6661:1: ( '@' )
+            {
+            // InternalActionDSL.g:6661:1: ( '@' )
+            // InternalActionDSL.g:6662:2: '@'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
+            }
+            match(input,100,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group__2"
+    // InternalActionDSL.g:6671:1: rule__XAnnotation__Group__2 : rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 ;
+    public final void rule__XAnnotation__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6675:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
+            // InternalActionDSL.g:6676:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
+            {
+            pushFollow(FOLLOW_43);
+            rule__XAnnotation__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group__2"
+
+
+    // $ANTLR start "rule__XAnnotation__Group__2__Impl"
+    // InternalActionDSL.g:6683:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
+    public final void rule__XAnnotation__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6687:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
+            // InternalActionDSL.g:6688:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            {
+            // InternalActionDSL.g:6688:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalActionDSL.g:6689:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); 
+            }
+            // InternalActionDSL.g:6690:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalActionDSL.g:6690:3: rule__XAnnotation__AnnotationTypeAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__AnnotationTypeAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group__3"
+    // InternalActionDSL.g:6698:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
+    public final void rule__XAnnotation__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6702:1: ( rule__XAnnotation__Group__3__Impl )
+            // InternalActionDSL.g:6703:2: rule__XAnnotation__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group__3"
+
+
+    // $ANTLR start "rule__XAnnotation__Group__3__Impl"
+    // InternalActionDSL.g:6709:1: rule__XAnnotation__Group__3__Impl : ( ( rule__XAnnotation__Group_3__0 )? ) ;
+    public final void rule__XAnnotation__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6713:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
+            // InternalActionDSL.g:6714:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:6714:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalActionDSL.g:6715:2: ( rule__XAnnotation__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:6716:2: ( rule__XAnnotation__Group_3__0 )?
+            int alt71=2;
+            int LA71_0 = input.LA(1);
+
+            if ( (LA71_0==101) ) {
+                alt71=1;
+            }
+            switch (alt71) {
+                case 1 :
+                    // InternalActionDSL.g:6716:3: rule__XAnnotation__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotation__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3__0"
+    // InternalActionDSL.g:6725:1: rule__XAnnotation__Group_3__0 : rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 ;
+    public final void rule__XAnnotation__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6729:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
+            // InternalActionDSL.g:6730:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
+            {
+            pushFollow(FOLLOW_44);
+            rule__XAnnotation__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3__0"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3__0__Impl"
+    // InternalActionDSL.g:6737:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
+    public final void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6741:1: ( ( ( '(' ) ) )
+            // InternalActionDSL.g:6742:1: ( ( '(' ) )
+            {
+            // InternalActionDSL.g:6742:1: ( ( '(' ) )
+            // InternalActionDSL.g:6743:2: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); 
+            }
+            // InternalActionDSL.g:6744:2: ( '(' )
+            // InternalActionDSL.g:6744:3: '('
+            {
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3__1"
+    // InternalActionDSL.g:6752:1: rule__XAnnotation__Group_3__1 : rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 ;
+    public final void rule__XAnnotation__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6756:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
+            // InternalActionDSL.g:6757:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
+            {
+            pushFollow(FOLLOW_44);
+            rule__XAnnotation__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group_3__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3__1"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3__1__Impl"
+    // InternalActionDSL.g:6764:1: rule__XAnnotation__Group_3__1__Impl : ( ( rule__XAnnotation__Alternatives_3_1 )? ) ;
+    public final void rule__XAnnotation__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6768:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
+            // InternalActionDSL.g:6769:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            {
+            // InternalActionDSL.g:6769:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalActionDSL.g:6770:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); 
+            }
+            // InternalActionDSL.g:6771:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            int alt72=2;
+            int LA72_0 = input.LA(1);
+
+            if ( ((LA72_0>=RULE_ID && LA72_0<=RULE_DECIMAL)||LA72_0==29||(LA72_0>=36 && LA72_0<=37)||LA72_0==42||(LA72_0>=47 && LA72_0<=52)||LA72_0==79||(LA72_0>=100 && LA72_0<=101)||(LA72_0>=105 && LA72_0<=106)||LA72_0==109||LA72_0==111||(LA72_0>=115 && LA72_0<=123)||LA72_0==125||LA72_0==140) ) {
+                alt72=1;
+            }
+            switch (alt72) {
+                case 1 :
+                    // InternalActionDSL.g:6771:3: rule__XAnnotation__Alternatives_3_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotation__Alternatives_3_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3__2"
+    // InternalActionDSL.g:6779:1: rule__XAnnotation__Group_3__2 : rule__XAnnotation__Group_3__2__Impl ;
+    public final void rule__XAnnotation__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6783:1: ( rule__XAnnotation__Group_3__2__Impl )
+            // InternalActionDSL.g:6784:2: rule__XAnnotation__Group_3__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group_3__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3__2"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3__2__Impl"
+    // InternalActionDSL.g:6790:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
+    public final void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6794:1: ( ( ')' ) )
+            // InternalActionDSL.g:6795:1: ( ')' )
+            {
+            // InternalActionDSL.g:6795:1: ( ')' )
+            // InternalActionDSL.g:6796:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3_1_0__0"
+    // InternalActionDSL.g:6806:1: rule__XAnnotation__Group_3_1_0__0 : rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 ;
+    public final void rule__XAnnotation__Group_3_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6810:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
+            // InternalActionDSL.g:6811:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XAnnotation__Group_3_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group_3_1_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3_1_0__0"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3_1_0__0__Impl"
+    // InternalActionDSL.g:6818:1: rule__XAnnotation__Group_3_1_0__0__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) ;
+    public final void rule__XAnnotation__Group_3_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6822:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
+            // InternalActionDSL.g:6823:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            {
+            // InternalActionDSL.g:6823:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalActionDSL.g:6824:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); 
+            }
+            // InternalActionDSL.g:6825:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalActionDSL.g:6825:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3_1_0__1"
+    // InternalActionDSL.g:6833:1: rule__XAnnotation__Group_3_1_0__1 : rule__XAnnotation__Group_3_1_0__1__Impl ;
+    public final void rule__XAnnotation__Group_3_1_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6837:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
+            // InternalActionDSL.g:6838:2: rule__XAnnotation__Group_3_1_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group_3_1_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3_1_0__1"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3_1_0__1__Impl"
+    // InternalActionDSL.g:6844:1: rule__XAnnotation__Group_3_1_0__1__Impl : ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) ;
+    public final void rule__XAnnotation__Group_3_1_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6848:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
+            // InternalActionDSL.g:6849:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            {
+            // InternalActionDSL.g:6849:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalActionDSL.g:6850:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); 
+            }
+            // InternalActionDSL.g:6851:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            loop73:
+            do {
+                int alt73=2;
+                int LA73_0 = input.LA(1);
+
+                if ( (LA73_0==103) ) {
+                    alt73=1;
+                }
+
+
+                switch (alt73) {
+            	case 1 :
+            	    // InternalActionDSL.g:6851:3: rule__XAnnotation__Group_3_1_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XAnnotation__Group_3_1_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop73;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3_1_0__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0"
+    // InternalActionDSL.g:6860:1: rule__XAnnotation__Group_3_1_0_1__0 : rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 ;
+    public final void rule__XAnnotation__Group_3_1_0_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6864:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
+            // InternalActionDSL.g:6865:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__XAnnotation__Group_3_1_0_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group_3_1_0_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3_1_0_1__0"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0__Impl"
+    // InternalActionDSL.g:6872:1: rule__XAnnotation__Group_3_1_0_1__0__Impl : ( ',' ) ;
+    public final void rule__XAnnotation__Group_3_1_0_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6876:1: ( ( ',' ) )
+            // InternalActionDSL.g:6877:1: ( ',' )
+            {
+            // InternalActionDSL.g:6877:1: ( ',' )
+            // InternalActionDSL.g:6878:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3_1_0_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1"
+    // InternalActionDSL.g:6887:1: rule__XAnnotation__Group_3_1_0_1__1 : rule__XAnnotation__Group_3_1_0_1__1__Impl ;
+    public final void rule__XAnnotation__Group_3_1_0_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6891:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
+            // InternalActionDSL.g:6892:2: rule__XAnnotation__Group_3_1_0_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group_3_1_0_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3_1_0_1__1"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1__Impl"
+    // InternalActionDSL.g:6898:1: rule__XAnnotation__Group_3_1_0_1__1__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) ;
+    public final void rule__XAnnotation__Group_3_1_0_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6902:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
+            // InternalActionDSL.g:6903:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            {
+            // InternalActionDSL.g:6903:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalActionDSL.g:6904:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); 
+            }
+            // InternalActionDSL.g:6905:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalActionDSL.g:6905:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3_1_0_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group__0"
+    // InternalActionDSL.g:6914:1: rule__XAnnotationElementValuePair__Group__0 : rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 ;
+    public final void rule__XAnnotationElementValuePair__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6918:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
+            // InternalActionDSL.g:6919:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XAnnotationElementValuePair__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group__0__Impl"
+    // InternalActionDSL.g:6926:1: rule__XAnnotationElementValuePair__Group__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) ;
+    public final void rule__XAnnotationElementValuePair__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6930:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
+            // InternalActionDSL.g:6931:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            {
+            // InternalActionDSL.g:6931:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalActionDSL.g:6932:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); 
+            }
+            // InternalActionDSL.g:6933:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalActionDSL.g:6933:3: rule__XAnnotationElementValuePair__Group_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__Group_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group__1"
+    // InternalActionDSL.g:6941:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
+    public final void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6945:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
+            // InternalActionDSL.g:6946:2: rule__XAnnotationElementValuePair__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group__1__Impl"
+    // InternalActionDSL.g:6952:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
+    public final void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6956:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
+            // InternalActionDSL.g:6957:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            {
+            // InternalActionDSL.g:6957:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalActionDSL.g:6958:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); 
+            }
+            // InternalActionDSL.g:6959:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalActionDSL.g:6959:3: rule__XAnnotationElementValuePair__ValueAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__ValueAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0"
+    // InternalActionDSL.g:6968:1: rule__XAnnotationElementValuePair__Group_0__0 : rule__XAnnotationElementValuePair__Group_0__0__Impl ;
+    public final void rule__XAnnotationElementValuePair__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6972:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
+            // InternalActionDSL.g:6973:2: rule__XAnnotationElementValuePair__Group_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group_0__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0__Impl"
+    // InternalActionDSL.g:6979:1: rule__XAnnotationElementValuePair__Group_0__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) ;
+    public final void rule__XAnnotationElementValuePair__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6983:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
+            // InternalActionDSL.g:6984:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            {
+            // InternalActionDSL.g:6984:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalActionDSL.g:6985:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); 
+            }
+            // InternalActionDSL.g:6986:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalActionDSL.g:6986:3: rule__XAnnotationElementValuePair__Group_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__Group_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0"
+    // InternalActionDSL.g:6995:1: rule__XAnnotationElementValuePair__Group_0_0__0 : rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 ;
+    public final void rule__XAnnotationElementValuePair__Group_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:6999:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
+            // InternalActionDSL.g:7000:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
+            {
+            pushFollow(FOLLOW_48);
+            rule__XAnnotationElementValuePair__Group_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__Group_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group_0_0__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0__Impl"
+    // InternalActionDSL.g:7007:1: rule__XAnnotationElementValuePair__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) ;
+    public final void rule__XAnnotationElementValuePair__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7011:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
+            // InternalActionDSL.g:7012:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            {
+            // InternalActionDSL.g:7012:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalActionDSL.g:7013:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); 
+            }
+            // InternalActionDSL.g:7014:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalActionDSL.g:7014:3: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__ElementAssignment_0_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1"
+    // InternalActionDSL.g:7022:1: rule__XAnnotationElementValuePair__Group_0_0__1 : rule__XAnnotationElementValuePair__Group_0_0__1__Impl ;
+    public final void rule__XAnnotationElementValuePair__Group_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7026:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
+            // InternalActionDSL.g:7027:2: rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValuePair__Group_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group_0_0__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1__Impl"
+    // InternalActionDSL.g:7033:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
+    public final void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7037:1: ( ( '=' ) )
+            // InternalActionDSL.g:7038:1: ( '=' )
+            {
+            // InternalActionDSL.g:7038:1: ( '=' )
+            // InternalActionDSL.g:7039:2: '='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); 
+            }
+            match(input,13,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__Group_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0"
+    // InternalActionDSL.g:7049:1: rule__XAnnotationElementValueOrCommaList__Group_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7053:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
+            // InternalActionDSL.g:7054:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
+            {
+            pushFollow(FOLLOW_49);
+            rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl"
+    // InternalActionDSL.g:7061:1: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7065:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
+            // InternalActionDSL.g:7066:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            {
+            // InternalActionDSL.g:7066:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalActionDSL.g:7067:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); 
+            }
+            // InternalActionDSL.g:7068:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalActionDSL.g:7068:3: rule__XAnnotationElementValueOrCommaList__Group_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1"
+    // InternalActionDSL.g:7076:1: rule__XAnnotationElementValueOrCommaList__Group_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7080:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
+            // InternalActionDSL.g:7081:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
+            {
+            pushFollow(FOLLOW_49);
+            rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl"
+    // InternalActionDSL.g:7088:1: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7092:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
+            // InternalActionDSL.g:7093:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            {
+            // InternalActionDSL.g:7093:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalActionDSL.g:7094:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); 
+            }
+            // InternalActionDSL.g:7095:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            int alt74=2;
+            int LA74_0 = input.LA(1);
+
+            if ( ((LA74_0>=RULE_ID && LA74_0<=RULE_DECIMAL)||LA74_0==29||(LA74_0>=36 && LA74_0<=37)||LA74_0==42||(LA74_0>=47 && LA74_0<=52)||LA74_0==79||(LA74_0>=100 && LA74_0<=101)||(LA74_0>=105 && LA74_0<=106)||LA74_0==109||LA74_0==111||(LA74_0>=115 && LA74_0<=123)||LA74_0==125||LA74_0==140) ) {
+                alt74=1;
+            }
+            switch (alt74) {
+                case 1 :
+                    // InternalActionDSL.g:7095:3: rule__XAnnotationElementValueOrCommaList__Group_0_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotationElementValueOrCommaList__Group_0_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2"
+    // InternalActionDSL.g:7103:1: rule__XAnnotationElementValueOrCommaList__Group_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7107:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
+            // InternalActionDSL.g:7108:2: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0__2"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl"
+    // InternalActionDSL.g:7114:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7118:1: ( ( ']' ) )
+            // InternalActionDSL.g:7119:1: ( ']' )
+            {
+            // InternalActionDSL.g:7119:1: ( ']' )
+            // InternalActionDSL.g:7120:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+            match(input,104,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0"
+    // InternalActionDSL.g:7130:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7134:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
+            // InternalActionDSL.g:7135:2: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_0__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl"
+    // InternalActionDSL.g:7141:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7145:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
+            // InternalActionDSL.g:7146:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            {
+            // InternalActionDSL.g:7146:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalActionDSL.g:7147:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); 
+            }
+            // InternalActionDSL.g:7148:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalActionDSL.g:7148:3: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0"
+    // InternalActionDSL.g:7157:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7161:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
+            // InternalActionDSL.g:7162:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+            {
+            pushFollow(FOLLOW_50);
+            rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl"
+    // InternalActionDSL.g:7169:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl : ( () ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7173:1: ( ( () ) )
+            // InternalActionDSL.g:7174:1: ( () )
+            {
+            // InternalActionDSL.g:7174:1: ( () )
+            // InternalActionDSL.g:7175:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+            // InternalActionDSL.g:7176:2: ()
+            // InternalActionDSL.g:7176:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1"
+    // InternalActionDSL.g:7184:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7188:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
+            // InternalActionDSL.g:7189:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+            {
+            pushFollow(FOLLOW_51);
+            rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl"
+    // InternalActionDSL.g:7196:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl : ( '#' ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7200:1: ( ( '#' ) )
+            // InternalActionDSL.g:7201:1: ( '#' )
+            {
+            // InternalActionDSL.g:7201:1: ( '#' )
+            // InternalActionDSL.g:7202:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+            match(input,105,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2"
+    // InternalActionDSL.g:7211:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7215:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
+            // InternalActionDSL.g:7216:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl"
+    // InternalActionDSL.g:7222:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl : ( '[' ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7226:1: ( ( '[' ) )
+            // InternalActionDSL.g:7227:1: ( '[' )
+            {
+            // InternalActionDSL.g:7227:1: ( '[' )
+            // InternalActionDSL.g:7228:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+            match(input,106,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0"
+    // InternalActionDSL.g:7238:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7242:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
+            // InternalActionDSL.g:7243:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_1__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl"
+    // InternalActionDSL.g:7250:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7254:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
+            // InternalActionDSL.g:7255:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            {
+            // InternalActionDSL.g:7255:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalActionDSL.g:7256:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); 
+            }
+            // InternalActionDSL.g:7257:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalActionDSL.g:7257:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1"
+    // InternalActionDSL.g:7265:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7269:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
+            // InternalActionDSL.g:7270:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_1__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl"
+    // InternalActionDSL.g:7276:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7280:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
+            // InternalActionDSL.g:7281:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            {
+            // InternalActionDSL.g:7281:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalActionDSL.g:7282:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); 
+            }
+            // InternalActionDSL.g:7283:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            loop75:
+            do {
+                int alt75=2;
+                int LA75_0 = input.LA(1);
+
+                if ( (LA75_0==103) ) {
+                    alt75=1;
+                }
+
+
+                switch (alt75) {
+            	case 1 :
+            	    // InternalActionDSL.g:7283:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop75;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0"
+    // InternalActionDSL.g:7292:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7296:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
+            // InternalActionDSL.g:7297:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl"
+    // InternalActionDSL.g:7304:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl : ( ',' ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7308:1: ( ( ',' ) )
+            // InternalActionDSL.g:7309:1: ( ',' )
+            {
+            // InternalActionDSL.g:7309:1: ( ',' )
+            // InternalActionDSL.g:7310:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1"
+    // InternalActionDSL.g:7319:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7323:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
+            // InternalActionDSL.g:7324:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl"
+    // InternalActionDSL.g:7330:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7334:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalActionDSL.g:7335:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            {
+            // InternalActionDSL.g:7335:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalActionDSL.g:7336:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); 
+            }
+            // InternalActionDSL.g:7337:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalActionDSL.g:7337:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0"
+    // InternalActionDSL.g:7346:1: rule__XAnnotationElementValueOrCommaList__Group_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7350:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
+            // InternalActionDSL.g:7351:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl"
+    // InternalActionDSL.g:7358:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7362:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalActionDSL.g:7363:1: ( ruleXAnnotationOrExpression )
+            {
+            // InternalActionDSL.g:7363:1: ( ruleXAnnotationOrExpression )
+            // InternalActionDSL.g:7364:2: ruleXAnnotationOrExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1"
+    // InternalActionDSL.g:7373:1: rule__XAnnotationElementValueOrCommaList__Group_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7377:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
+            // InternalActionDSL.g:7378:2: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl"
+    // InternalActionDSL.g:7384:1: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7388:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
+            // InternalActionDSL.g:7389:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            {
+            // InternalActionDSL.g:7389:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalActionDSL.g:7390:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); 
+            }
+            // InternalActionDSL.g:7391:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            int alt76=2;
+            int LA76_0 = input.LA(1);
+
+            if ( (LA76_0==103) ) {
+                alt76=1;
+            }
+            switch (alt76) {
+                case 1 :
+                    // InternalActionDSL.g:7391:3: rule__XAnnotationElementValueOrCommaList__Group_1_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotationElementValueOrCommaList__Group_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0"
+    // InternalActionDSL.g:7400:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7404:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
+            // InternalActionDSL.g:7405:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1_1__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl"
+    // InternalActionDSL.g:7412:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7416:1: ( ( () ) )
+            // InternalActionDSL.g:7417:1: ( () )
+            {
+            // InternalActionDSL.g:7417:1: ( () )
+            // InternalActionDSL.g:7418:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); 
+            }
+            // InternalActionDSL.g:7419:2: ()
+            // InternalActionDSL.g:7419:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1"
+    // InternalActionDSL.g:7427:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7431:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
+            // InternalActionDSL.g:7432:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1_1__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl"
+    // InternalActionDSL.g:7438:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7442:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
+            // InternalActionDSL.g:7443:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            {
+            // InternalActionDSL.g:7443:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalActionDSL.g:7444:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            {
+            // InternalActionDSL.g:7444:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
+            // InternalActionDSL.g:7445:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+            // InternalActionDSL.g:7446:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalActionDSL.g:7446:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            {
+            pushFollow(FOLLOW_46);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+
+            }
+
+            // InternalActionDSL.g:7449:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalActionDSL.g:7450:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+            // InternalActionDSL.g:7451:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            loop77:
+            do {
+                int alt77=2;
+                int LA77_0 = input.LA(1);
+
+                if ( (LA77_0==103) ) {
+                    alt77=1;
+                }
+
+
+                switch (alt77) {
+            	case 1 :
+            	    // InternalActionDSL.g:7451:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop77;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0"
+    // InternalActionDSL.g:7461:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7465:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
+            // InternalActionDSL.g:7466:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl"
+    // InternalActionDSL.g:7473:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl : ( ',' ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7477:1: ( ( ',' ) )
+            // InternalActionDSL.g:7478:1: ( ',' )
+            {
+            // InternalActionDSL.g:7478:1: ( ',' )
+            // InternalActionDSL.g:7479:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1"
+    // InternalActionDSL.g:7488:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7492:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
+            // InternalActionDSL.g:7493:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl"
+    // InternalActionDSL.g:7499:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7503:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
+            // InternalActionDSL.g:7504:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            {
+            // InternalActionDSL.g:7504:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalActionDSL.g:7505:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); 
+            }
+            // InternalActionDSL.g:7506:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalActionDSL.g:7506:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0__0"
+    // InternalActionDSL.g:7515:1: rule__XAnnotationElementValue__Group_0__0 : rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 ;
+    public final void rule__XAnnotationElementValue__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7519:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
+            // InternalActionDSL.g:7520:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
+            {
+            pushFollow(FOLLOW_49);
+            rule__XAnnotationElementValue__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0__0__Impl"
+    // InternalActionDSL.g:7527:1: rule__XAnnotationElementValue__Group_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) ;
+    public final void rule__XAnnotationElementValue__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7531:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
+            // InternalActionDSL.g:7532:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            {
+            // InternalActionDSL.g:7532:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalActionDSL.g:7533:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); 
+            }
+            // InternalActionDSL.g:7534:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalActionDSL.g:7534:3: rule__XAnnotationElementValue__Group_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0__1"
+    // InternalActionDSL.g:7542:1: rule__XAnnotationElementValue__Group_0__1 : rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 ;
+    public final void rule__XAnnotationElementValue__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7546:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
+            // InternalActionDSL.g:7547:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
+            {
+            pushFollow(FOLLOW_49);
+            rule__XAnnotationElementValue__Group_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0__1__Impl"
+    // InternalActionDSL.g:7554:1: rule__XAnnotationElementValue__Group_0__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) ;
+    public final void rule__XAnnotationElementValue__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7558:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
+            // InternalActionDSL.g:7559:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            {
+            // InternalActionDSL.g:7559:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalActionDSL.g:7560:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); 
+            }
+            // InternalActionDSL.g:7561:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            int alt78=2;
+            int LA78_0 = input.LA(1);
+
+            if ( ((LA78_0>=RULE_ID && LA78_0<=RULE_DECIMAL)||LA78_0==29||(LA78_0>=36 && LA78_0<=37)||LA78_0==42||(LA78_0>=47 && LA78_0<=52)||LA78_0==79||(LA78_0>=100 && LA78_0<=101)||(LA78_0>=105 && LA78_0<=106)||LA78_0==109||LA78_0==111||(LA78_0>=115 && LA78_0<=123)||LA78_0==125||LA78_0==140) ) {
+                alt78=1;
+            }
+            switch (alt78) {
+                case 1 :
+                    // InternalActionDSL.g:7561:3: rule__XAnnotationElementValue__Group_0_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAnnotationElementValue__Group_0_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0__2"
+    // InternalActionDSL.g:7569:1: rule__XAnnotationElementValue__Group_0__2 : rule__XAnnotationElementValue__Group_0__2__Impl ;
+    public final void rule__XAnnotationElementValue__Group_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7573:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
+            // InternalActionDSL.g:7574:2: rule__XAnnotationElementValue__Group_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0__2"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0__2__Impl"
+    // InternalActionDSL.g:7580:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
+    public final void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7584:1: ( ( ']' ) )
+            // InternalActionDSL.g:7585:1: ( ']' )
+            {
+            // InternalActionDSL.g:7585:1: ( ']' )
+            // InternalActionDSL.g:7586:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+            match(input,104,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0__2__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0"
+    // InternalActionDSL.g:7596:1: rule__XAnnotationElementValue__Group_0_0__0 : rule__XAnnotationElementValue__Group_0_0__0__Impl ;
+    public final void rule__XAnnotationElementValue__Group_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7600:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
+            // InternalActionDSL.g:7601:2: rule__XAnnotationElementValue__Group_0_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_0__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0__Impl"
+    // InternalActionDSL.g:7607:1: rule__XAnnotationElementValue__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) ;
+    public final void rule__XAnnotationElementValue__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7611:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
+            // InternalActionDSL.g:7612:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            {
+            // InternalActionDSL.g:7612:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalActionDSL.g:7613:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); 
+            }
+            // InternalActionDSL.g:7614:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalActionDSL.g:7614:3: rule__XAnnotationElementValue__Group_0_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0"
+    // InternalActionDSL.g:7623:1: rule__XAnnotationElementValue__Group_0_0_0__0 : rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 ;
+    public final void rule__XAnnotationElementValue__Group_0_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7627:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
+            // InternalActionDSL.g:7628:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
+            {
+            pushFollow(FOLLOW_50);
+            rule__XAnnotationElementValue__Group_0_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_0_0__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0__Impl"
+    // InternalActionDSL.g:7635:1: rule__XAnnotationElementValue__Group_0_0_0__0__Impl : ( () ) ;
+    public final void rule__XAnnotationElementValue__Group_0_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7639:1: ( ( () ) )
+            // InternalActionDSL.g:7640:1: ( () )
+            {
+            // InternalActionDSL.g:7640:1: ( () )
+            // InternalActionDSL.g:7641:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+            // InternalActionDSL.g:7642:2: ()
+            // InternalActionDSL.g:7642:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1"
+    // InternalActionDSL.g:7650:1: rule__XAnnotationElementValue__Group_0_0_0__1 : rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 ;
+    public final void rule__XAnnotationElementValue__Group_0_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7654:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
+            // InternalActionDSL.g:7655:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
+            {
+            pushFollow(FOLLOW_51);
+            rule__XAnnotationElementValue__Group_0_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_0_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_0_0__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1__Impl"
+    // InternalActionDSL.g:7662:1: rule__XAnnotationElementValue__Group_0_0_0__1__Impl : ( '#' ) ;
+    public final void rule__XAnnotationElementValue__Group_0_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7666:1: ( ( '#' ) )
+            // InternalActionDSL.g:7667:1: ( '#' )
+            {
+            // InternalActionDSL.g:7667:1: ( '#' )
+            // InternalActionDSL.g:7668:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+            match(input,105,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2"
+    // InternalActionDSL.g:7677:1: rule__XAnnotationElementValue__Group_0_0_0__2 : rule__XAnnotationElementValue__Group_0_0_0__2__Impl ;
+    public final void rule__XAnnotationElementValue__Group_0_0_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7681:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
+            // InternalActionDSL.g:7682:2: rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_0_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_0_0__2"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2__Impl"
+    // InternalActionDSL.g:7688:1: rule__XAnnotationElementValue__Group_0_0_0__2__Impl : ( '[' ) ;
+    public final void rule__XAnnotationElementValue__Group_0_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7692:1: ( ( '[' ) )
+            // InternalActionDSL.g:7693:1: ( '[' )
+            {
+            // InternalActionDSL.g:7693:1: ( '[' )
+            // InternalActionDSL.g:7694:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+            match(input,106,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_0_0__2__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0"
+    // InternalActionDSL.g:7704:1: rule__XAnnotationElementValue__Group_0_1__0 : rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 ;
+    public final void rule__XAnnotationElementValue__Group_0_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7708:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
+            // InternalActionDSL.g:7709:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XAnnotationElementValue__Group_0_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_1__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0__Impl"
+    // InternalActionDSL.g:7716:1: rule__XAnnotationElementValue__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) ;
+    public final void rule__XAnnotationElementValue__Group_0_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7720:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
+            // InternalActionDSL.g:7721:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            {
+            // InternalActionDSL.g:7721:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalActionDSL.g:7722:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); 
+            }
+            // InternalActionDSL.g:7723:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalActionDSL.g:7723:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__ElementsAssignment_0_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1"
+    // InternalActionDSL.g:7731:1: rule__XAnnotationElementValue__Group_0_1__1 : rule__XAnnotationElementValue__Group_0_1__1__Impl ;
+    public final void rule__XAnnotationElementValue__Group_0_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7735:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
+            // InternalActionDSL.g:7736:2: rule__XAnnotationElementValue__Group_0_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_1__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1__Impl"
+    // InternalActionDSL.g:7742:1: rule__XAnnotationElementValue__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) ;
+    public final void rule__XAnnotationElementValue__Group_0_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7746:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
+            // InternalActionDSL.g:7747:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            {
+            // InternalActionDSL.g:7747:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalActionDSL.g:7748:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); 
+            }
+            // InternalActionDSL.g:7749:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            loop79:
+            do {
+                int alt79=2;
+                int LA79_0 = input.LA(1);
+
+                if ( (LA79_0==103) ) {
+                    alt79=1;
+                }
+
+
+                switch (alt79) {
+            	case 1 :
+            	    // InternalActionDSL.g:7749:3: rule__XAnnotationElementValue__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XAnnotationElementValue__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop79;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0"
+    // InternalActionDSL.g:7758:1: rule__XAnnotationElementValue__Group_0_1_1__0 : rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 ;
+    public final void rule__XAnnotationElementValue__Group_0_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7762:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
+            // InternalActionDSL.g:7763:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XAnnotationElementValue__Group_0_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_1_1__0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0__Impl"
+    // InternalActionDSL.g:7770:1: rule__XAnnotationElementValue__Group_0_1_1__0__Impl : ( ',' ) ;
+    public final void rule__XAnnotationElementValue__Group_0_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7774:1: ( ( ',' ) )
+            // InternalActionDSL.g:7775:1: ( ',' )
+            {
+            // InternalActionDSL.g:7775:1: ( ',' )
+            // InternalActionDSL.g:7776:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1"
+    // InternalActionDSL.g:7785:1: rule__XAnnotationElementValue__Group_0_1_1__1 : rule__XAnnotationElementValue__Group_0_1_1__1__Impl ;
+    public final void rule__XAnnotationElementValue__Group_0_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7789:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
+            // InternalActionDSL.g:7790:2: rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__Group_0_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_1_1__1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1__Impl"
+    // InternalActionDSL.g:7796:1: rule__XAnnotationElementValue__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) ;
+    public final void rule__XAnnotationElementValue__Group_0_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7800:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalActionDSL.g:7801:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            {
+            // InternalActionDSL.g:7801:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalActionDSL.g:7802:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); 
+            }
+            // InternalActionDSL.g:7803:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalActionDSL.g:7803:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Group_0_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_0__0"
+    // InternalActionDSL.g:7812:1: rule__XAssignment__Group_0__0 : rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 ;
+    public final void rule__XAssignment__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7816:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
+            // InternalActionDSL.g:7817:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
+            {
+            pushFollow(FOLLOW_52);
+            rule__XAssignment__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_0__0"
+
+
+    // $ANTLR start "rule__XAssignment__Group_0__0__Impl"
+    // InternalActionDSL.g:7824:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
+    public final void rule__XAssignment__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7828:1: ( ( () ) )
+            // InternalActionDSL.g:7829:1: ( () )
+            {
+            // InternalActionDSL.g:7829:1: ( () )
+            // InternalActionDSL.g:7830:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); 
+            }
+            // InternalActionDSL.g:7831:2: ()
+            // InternalActionDSL.g:7831:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_0__1"
+    // InternalActionDSL.g:7839:1: rule__XAssignment__Group_0__1 : rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 ;
+    public final void rule__XAssignment__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7843:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
+            // InternalActionDSL.g:7844:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
+            {
+            pushFollow(FOLLOW_48);
+            rule__XAssignment__Group_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_0__1"
+
+
+    // $ANTLR start "rule__XAssignment__Group_0__1__Impl"
+    // InternalActionDSL.g:7851:1: rule__XAssignment__Group_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) ;
+    public final void rule__XAssignment__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7855:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
+            // InternalActionDSL.g:7856:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            {
+            // InternalActionDSL.g:7856:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalActionDSL.g:7857:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); 
+            }
+            // InternalActionDSL.g:7858:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalActionDSL.g:7858:3: rule__XAssignment__FeatureAssignment_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__FeatureAssignment_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_0__2"
+    // InternalActionDSL.g:7866:1: rule__XAssignment__Group_0__2 : rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 ;
+    public final void rule__XAssignment__Group_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7870:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
+            // InternalActionDSL.g:7871:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
+            {
+            pushFollow(FOLLOW_47);
+            rule__XAssignment__Group_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_0__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_0__2"
+
+
+    // $ANTLR start "rule__XAssignment__Group_0__2__Impl"
+    // InternalActionDSL.g:7878:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
+    public final void rule__XAssignment__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7882:1: ( ( ruleOpSingleAssign ) )
+            // InternalActionDSL.g:7883:1: ( ruleOpSingleAssign )
+            {
+            // InternalActionDSL.g:7883:1: ( ruleOpSingleAssign )
+            // InternalActionDSL.g:7884:2: ruleOpSingleAssign
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_0__2__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_0__3"
+    // InternalActionDSL.g:7893:1: rule__XAssignment__Group_0__3 : rule__XAssignment__Group_0__3__Impl ;
+    public final void rule__XAssignment__Group_0__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7897:1: ( rule__XAssignment__Group_0__3__Impl )
+            // InternalActionDSL.g:7898:2: rule__XAssignment__Group_0__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_0__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_0__3"
+
+
+    // $ANTLR start "rule__XAssignment__Group_0__3__Impl"
+    // InternalActionDSL.g:7904:1: rule__XAssignment__Group_0__3__Impl : ( ( rule__XAssignment__ValueAssignment_0_3 ) ) ;
+    public final void rule__XAssignment__Group_0__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7908:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
+            // InternalActionDSL.g:7909:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            {
+            // InternalActionDSL.g:7909:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalActionDSL.g:7910:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); 
+            }
+            // InternalActionDSL.g:7911:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalActionDSL.g:7911:3: rule__XAssignment__ValueAssignment_0_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__ValueAssignment_0_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_0__3__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1__0"
+    // InternalActionDSL.g:7920:1: rule__XAssignment__Group_1__0 : rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 ;
+    public final void rule__XAssignment__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7924:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
+            // InternalActionDSL.g:7925:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
+            {
+            pushFollow(FOLLOW_53);
+            rule__XAssignment__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1__0"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1__0__Impl"
+    // InternalActionDSL.g:7932:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
+    public final void rule__XAssignment__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7936:1: ( ( ruleXOrExpression ) )
+            // InternalActionDSL.g:7937:1: ( ruleXOrExpression )
+            {
+            // InternalActionDSL.g:7937:1: ( ruleXOrExpression )
+            // InternalActionDSL.g:7938:2: ruleXOrExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1__1"
+    // InternalActionDSL.g:7947:1: rule__XAssignment__Group_1__1 : rule__XAssignment__Group_1__1__Impl ;
+    public final void rule__XAssignment__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7951:1: ( rule__XAssignment__Group_1__1__Impl )
+            // InternalActionDSL.g:7952:2: rule__XAssignment__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1__1"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1__1__Impl"
+    // InternalActionDSL.g:7958:1: rule__XAssignment__Group_1__1__Impl : ( ( rule__XAssignment__Group_1_1__0 )? ) ;
+    public final void rule__XAssignment__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7962:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
+            // InternalActionDSL.g:7963:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            {
+            // InternalActionDSL.g:7963:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalActionDSL.g:7964:2: ( rule__XAssignment__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); 
+            }
+            // InternalActionDSL.g:7965:2: ( rule__XAssignment__Group_1_1__0 )?
+            int alt80=2;
+            alt80 = dfa80.predict(input);
+            switch (alt80) {
+                case 1 :
+                    // InternalActionDSL.g:7965:3: rule__XAssignment__Group_1_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XAssignment__Group_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getGroup_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1__0"
+    // InternalActionDSL.g:7974:1: rule__XAssignment__Group_1_1__0 : rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 ;
+    public final void rule__XAssignment__Group_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7978:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
+            // InternalActionDSL.g:7979:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XAssignment__Group_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1__0"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1__0__Impl"
+    // InternalActionDSL.g:7986:1: rule__XAssignment__Group_1_1__0__Impl : ( ( rule__XAssignment__Group_1_1_0__0 ) ) ;
+    public final void rule__XAssignment__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:7990:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
+            // InternalActionDSL.g:7991:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            {
+            // InternalActionDSL.g:7991:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalActionDSL.g:7992:2: ( rule__XAssignment__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); 
+            }
+            // InternalActionDSL.g:7993:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalActionDSL.g:7993:3: rule__XAssignment__Group_1_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_1_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1__1"
+    // InternalActionDSL.g:8001:1: rule__XAssignment__Group_1_1__1 : rule__XAssignment__Group_1_1__1__Impl ;
+    public final void rule__XAssignment__Group_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8005:1: ( rule__XAssignment__Group_1_1__1__Impl )
+            // InternalActionDSL.g:8006:2: rule__XAssignment__Group_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1__1"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1__1__Impl"
+    // InternalActionDSL.g:8012:1: rule__XAssignment__Group_1_1__1__Impl : ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) ;
+    public final void rule__XAssignment__Group_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8016:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
+            // InternalActionDSL.g:8017:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            {
+            // InternalActionDSL.g:8017:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalActionDSL.g:8018:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); 
+            }
+            // InternalActionDSL.g:8019:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalActionDSL.g:8019:3: rule__XAssignment__RightOperandAssignment_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__RightOperandAssignment_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1_0__0"
+    // InternalActionDSL.g:8028:1: rule__XAssignment__Group_1_1_0__0 : rule__XAssignment__Group_1_1_0__0__Impl ;
+    public final void rule__XAssignment__Group_1_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8032:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
+            // InternalActionDSL.g:8033:2: rule__XAssignment__Group_1_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_1_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1_0__0"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1_0__0__Impl"
+    // InternalActionDSL.g:8039:1: rule__XAssignment__Group_1_1_0__0__Impl : ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) ;
+    public final void rule__XAssignment__Group_1_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8043:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
+            // InternalActionDSL.g:8044:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:8044:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalActionDSL.g:8045:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalActionDSL.g:8046:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalActionDSL.g:8046:3: rule__XAssignment__Group_1_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_1_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0"
+    // InternalActionDSL.g:8055:1: rule__XAssignment__Group_1_1_0_0__0 : rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 ;
+    public final void rule__XAssignment__Group_1_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8059:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
+            // InternalActionDSL.g:8060:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_53);
+            rule__XAssignment__Group_1_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_1_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1_0_0__0"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0__Impl"
+    // InternalActionDSL.g:8067:1: rule__XAssignment__Group_1_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XAssignment__Group_1_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8071:1: ( ( () ) )
+            // InternalActionDSL.g:8072:1: ( () )
+            {
+            // InternalActionDSL.g:8072:1: ( () )
+            // InternalActionDSL.g:8073:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:8074:2: ()
+            // InternalActionDSL.g:8074:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1"
+    // InternalActionDSL.g:8082:1: rule__XAssignment__Group_1_1_0_0__1 : rule__XAssignment__Group_1_1_0_0__1__Impl ;
+    public final void rule__XAssignment__Group_1_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8086:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
+            // InternalActionDSL.g:8087:2: rule__XAssignment__Group_1_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__Group_1_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1_0_0__1"
+
+
+    // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1__Impl"
+    // InternalActionDSL.g:8093:1: rule__XAssignment__Group_1_1_0_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) ;
+    public final void rule__XAssignment__Group_1_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8097:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalActionDSL.g:8098:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            {
+            // InternalActionDSL.g:8098:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalActionDSL.g:8099:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:8100:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalActionDSL.g:8100:3: rule__XAssignment__FeatureAssignment_1_1_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAssignment__FeatureAssignment_1_1_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Group_1_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_5__0"
+    // InternalActionDSL.g:8109:1: rule__OpMultiAssign__Group_5__0 : rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 ;
+    public final void rule__OpMultiAssign__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8113:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
+            // InternalActionDSL.g:8114:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
+            {
+            pushFollow(FOLLOW_54);
+            rule__OpMultiAssign__Group_5__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpMultiAssign__Group_5__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_5__0"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_5__0__Impl"
+    // InternalActionDSL.g:8121:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
+    public final void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8125:1: ( ( '<' ) )
+            // InternalActionDSL.g:8126:1: ( '<' )
+            {
+            // InternalActionDSL.g:8126:1: ( '<' )
+            // InternalActionDSL.g:8127:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
+            }
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_5__1"
+    // InternalActionDSL.g:8136:1: rule__OpMultiAssign__Group_5__1 : rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 ;
+    public final void rule__OpMultiAssign__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8140:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
+            // InternalActionDSL.g:8141:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
+            {
+            pushFollow(FOLLOW_48);
+            rule__OpMultiAssign__Group_5__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpMultiAssign__Group_5__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_5__1"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_5__1__Impl"
+    // InternalActionDSL.g:8148:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
+    public final void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8152:1: ( ( '<' ) )
+            // InternalActionDSL.g:8153:1: ( '<' )
+            {
+            // InternalActionDSL.g:8153:1: ( '<' )
+            // InternalActionDSL.g:8154:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
+            }
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_5__2"
+    // InternalActionDSL.g:8163:1: rule__OpMultiAssign__Group_5__2 : rule__OpMultiAssign__Group_5__2__Impl ;
+    public final void rule__OpMultiAssign__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8167:1: ( rule__OpMultiAssign__Group_5__2__Impl )
+            // InternalActionDSL.g:8168:2: rule__OpMultiAssign__Group_5__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpMultiAssign__Group_5__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_5__2"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_5__2__Impl"
+    // InternalActionDSL.g:8174:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
+    public final void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8178:1: ( ( '=' ) )
+            // InternalActionDSL.g:8179:1: ( '=' )
+            {
+            // InternalActionDSL.g:8179:1: ( '=' )
+            // InternalActionDSL.g:8180:2: '='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
+            }
+            match(input,13,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_6__0"
+    // InternalActionDSL.g:8190:1: rule__OpMultiAssign__Group_6__0 : rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 ;
+    public final void rule__OpMultiAssign__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8194:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
+            // InternalActionDSL.g:8195:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
+            {
+            pushFollow(FOLLOW_55);
+            rule__OpMultiAssign__Group_6__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpMultiAssign__Group_6__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_6__0"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_6__0__Impl"
+    // InternalActionDSL.g:8202:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
+    public final void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8206:1: ( ( '>' ) )
+            // InternalActionDSL.g:8207:1: ( '>' )
+            {
+            // InternalActionDSL.g:8207:1: ( '>' )
+            // InternalActionDSL.g:8208:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_6__1"
+    // InternalActionDSL.g:8217:1: rule__OpMultiAssign__Group_6__1 : rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 ;
+    public final void rule__OpMultiAssign__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8221:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
+            // InternalActionDSL.g:8222:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
+            {
+            pushFollow(FOLLOW_55);
+            rule__OpMultiAssign__Group_6__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpMultiAssign__Group_6__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_6__1"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_6__1__Impl"
+    // InternalActionDSL.g:8229:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
+    public final void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8233:1: ( ( ( '>' )? ) )
+            // InternalActionDSL.g:8234:1: ( ( '>' )? )
+            {
+            // InternalActionDSL.g:8234:1: ( ( '>' )? )
+            // InternalActionDSL.g:8235:2: ( '>' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+            }
+            // InternalActionDSL.g:8236:2: ( '>' )?
+            int alt81=2;
+            int LA81_0 = input.LA(1);
+
+            if ( (LA81_0==28) ) {
+                alt81=1;
+            }
+            switch (alt81) {
+                case 1 :
+                    // InternalActionDSL.g:8236:3: '>'
+                    {
+                    match(input,28,FOLLOW_2); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_6__2"
+    // InternalActionDSL.g:8244:1: rule__OpMultiAssign__Group_6__2 : rule__OpMultiAssign__Group_6__2__Impl ;
+    public final void rule__OpMultiAssign__Group_6__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8248:1: ( rule__OpMultiAssign__Group_6__2__Impl )
+            // InternalActionDSL.g:8249:2: rule__OpMultiAssign__Group_6__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpMultiAssign__Group_6__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_6__2"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Group_6__2__Impl"
+    // InternalActionDSL.g:8255:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
+    public final void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8259:1: ( ( '>=' ) )
+            // InternalActionDSL.g:8260:1: ( '>=' )
+            {
+            // InternalActionDSL.g:8260:1: ( '>=' )
+            // InternalActionDSL.g:8261:2: '>='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
+            }
+            match(input,27,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Group_6__2__Impl"
+
+
+    // $ANTLR start "rule__XOrExpression__Group__0"
+    // InternalActionDSL.g:8271:1: rule__XOrExpression__Group__0 : rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 ;
+    public final void rule__XOrExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8275:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
+            // InternalActionDSL.g:8276:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
+            {
+            pushFollow(FOLLOW_56);
+            rule__XOrExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group__0"
+
+
+    // $ANTLR start "rule__XOrExpression__Group__0__Impl"
+    // InternalActionDSL.g:8283:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
+    public final void rule__XOrExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8287:1: ( ( ruleXAndExpression ) )
+            // InternalActionDSL.g:8288:1: ( ruleXAndExpression )
+            {
+            // InternalActionDSL.g:8288:1: ( ruleXAndExpression )
+            // InternalActionDSL.g:8289:2: ruleXAndExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XOrExpression__Group__1"
+    // InternalActionDSL.g:8298:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
+    public final void rule__XOrExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8302:1: ( rule__XOrExpression__Group__1__Impl )
+            // InternalActionDSL.g:8303:2: rule__XOrExpression__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group__1"
+
+
+    // $ANTLR start "rule__XOrExpression__Group__1__Impl"
+    // InternalActionDSL.g:8309:1: rule__XOrExpression__Group__1__Impl : ( ( rule__XOrExpression__Group_1__0 )* ) ;
+    public final void rule__XOrExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8313:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
+            // InternalActionDSL.g:8314:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            {
+            // InternalActionDSL.g:8314:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalActionDSL.g:8315:2: ( rule__XOrExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:8316:2: ( rule__XOrExpression__Group_1__0 )*
+            loop82:
+            do {
+                int alt82=2;
+                int LA82_0 = input.LA(1);
+
+                if ( (LA82_0==14) ) {
+                    int LA82_2 = input.LA(2);
+
+                    if ( (synpred148_InternalActionDSL()) ) {
+                        alt82=1;
+                    }
+
+
+                }
+
+
+                switch (alt82) {
+            	case 1 :
+            	    // InternalActionDSL.g:8316:3: rule__XOrExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_57);
+            	    rule__XOrExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop82;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1__0"
+    // InternalActionDSL.g:8325:1: rule__XOrExpression__Group_1__0 : rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 ;
+    public final void rule__XOrExpression__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8329:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
+            // InternalActionDSL.g:8330:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XOrExpression__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1__0"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1__0__Impl"
+    // InternalActionDSL.g:8337:1: rule__XOrExpression__Group_1__0__Impl : ( ( rule__XOrExpression__Group_1_0__0 ) ) ;
+    public final void rule__XOrExpression__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8341:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
+            // InternalActionDSL.g:8342:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            {
+            // InternalActionDSL.g:8342:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalActionDSL.g:8343:2: ( rule__XOrExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalActionDSL.g:8344:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalActionDSL.g:8344:3: rule__XOrExpression__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1__1"
+    // InternalActionDSL.g:8352:1: rule__XOrExpression__Group_1__1 : rule__XOrExpression__Group_1__1__Impl ;
+    public final void rule__XOrExpression__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8356:1: ( rule__XOrExpression__Group_1__1__Impl )
+            // InternalActionDSL.g:8357:2: rule__XOrExpression__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1__1"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1__1__Impl"
+    // InternalActionDSL.g:8363:1: rule__XOrExpression__Group_1__1__Impl : ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) ;
+    public final void rule__XOrExpression__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8367:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalActionDSL.g:8368:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalActionDSL.g:8368:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalActionDSL.g:8369:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalActionDSL.g:8370:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalActionDSL.g:8370:3: rule__XOrExpression__RightOperandAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__RightOperandAssignment_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1_0__0"
+    // InternalActionDSL.g:8379:1: rule__XOrExpression__Group_1_0__0 : rule__XOrExpression__Group_1_0__0__Impl ;
+    public final void rule__XOrExpression__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8383:1: ( rule__XOrExpression__Group_1_0__0__Impl )
+            // InternalActionDSL.g:8384:2: rule__XOrExpression__Group_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1_0__0__Impl"
+    // InternalActionDSL.g:8390:1: rule__XOrExpression__Group_1_0__0__Impl : ( ( rule__XOrExpression__Group_1_0_0__0 ) ) ;
+    public final void rule__XOrExpression__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8394:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
+            // InternalActionDSL.g:8395:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:8395:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalActionDSL.g:8396:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:8397:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalActionDSL.g:8397:3: rule__XOrExpression__Group_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1_0_0__0"
+    // InternalActionDSL.g:8406:1: rule__XOrExpression__Group_1_0_0__0 : rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 ;
+    public final void rule__XOrExpression__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8410:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
+            // InternalActionDSL.g:8411:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_56);
+            rule__XOrExpression__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:8418:1: rule__XOrExpression__Group_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XOrExpression__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8422:1: ( ( () ) )
+            // InternalActionDSL.g:8423:1: ( () )
+            {
+            // InternalActionDSL.g:8423:1: ( () )
+            // InternalActionDSL.g:8424:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:8425:2: ()
+            // InternalActionDSL.g:8425:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1_0_0__1"
+    // InternalActionDSL.g:8433:1: rule__XOrExpression__Group_1_0_0__1 : rule__XOrExpression__Group_1_0_0__1__Impl ;
+    public final void rule__XOrExpression__Group_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8437:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
+            // InternalActionDSL.g:8438:2: rule__XOrExpression__Group_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__Group_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1_0_0__1"
+
+
+    // $ANTLR start "rule__XOrExpression__Group_1_0_0__1__Impl"
+    // InternalActionDSL.g:8444:1: rule__XOrExpression__Group_1_0_0__1__Impl : ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    public final void rule__XOrExpression__Group_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8448:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalActionDSL.g:8449:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalActionDSL.g:8449:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalActionDSL.g:8450:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:8451:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalActionDSL.g:8451:3: rule__XOrExpression__FeatureAssignment_1_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOrExpression__FeatureAssignment_1_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__Group_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XAndExpression__Group__0"
+    // InternalActionDSL.g:8460:1: rule__XAndExpression__Group__0 : rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 ;
+    public final void rule__XAndExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8464:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
+            // InternalActionDSL.g:8465:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
+            {
+            pushFollow(FOLLOW_58);
+            rule__XAndExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group__0"
+
+
+    // $ANTLR start "rule__XAndExpression__Group__0__Impl"
+    // InternalActionDSL.g:8472:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
+    public final void rule__XAndExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8476:1: ( ( ruleXEqualityExpression ) )
+            // InternalActionDSL.g:8477:1: ( ruleXEqualityExpression )
+            {
+            // InternalActionDSL.g:8477:1: ( ruleXEqualityExpression )
+            // InternalActionDSL.g:8478:2: ruleXEqualityExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XAndExpression__Group__1"
+    // InternalActionDSL.g:8487:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
+    public final void rule__XAndExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8491:1: ( rule__XAndExpression__Group__1__Impl )
+            // InternalActionDSL.g:8492:2: rule__XAndExpression__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group__1"
+
+
+    // $ANTLR start "rule__XAndExpression__Group__1__Impl"
+    // InternalActionDSL.g:8498:1: rule__XAndExpression__Group__1__Impl : ( ( rule__XAndExpression__Group_1__0 )* ) ;
+    public final void rule__XAndExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8502:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
+            // InternalActionDSL.g:8503:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            {
+            // InternalActionDSL.g:8503:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalActionDSL.g:8504:2: ( rule__XAndExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:8505:2: ( rule__XAndExpression__Group_1__0 )*
+            loop83:
+            do {
+                int alt83=2;
+                int LA83_0 = input.LA(1);
+
+                if ( (LA83_0==15) ) {
+                    int LA83_2 = input.LA(2);
+
+                    if ( (synpred149_InternalActionDSL()) ) {
+                        alt83=1;
+                    }
+
+
+                }
+
+
+                switch (alt83) {
+            	case 1 :
+            	    // InternalActionDSL.g:8505:3: rule__XAndExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_59);
+            	    rule__XAndExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop83;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1__0"
+    // InternalActionDSL.g:8514:1: rule__XAndExpression__Group_1__0 : rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 ;
+    public final void rule__XAndExpression__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8518:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
+            // InternalActionDSL.g:8519:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XAndExpression__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1__0"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1__0__Impl"
+    // InternalActionDSL.g:8526:1: rule__XAndExpression__Group_1__0__Impl : ( ( rule__XAndExpression__Group_1_0__0 ) ) ;
+    public final void rule__XAndExpression__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8530:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
+            // InternalActionDSL.g:8531:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            {
+            // InternalActionDSL.g:8531:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalActionDSL.g:8532:2: ( rule__XAndExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalActionDSL.g:8533:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalActionDSL.g:8533:3: rule__XAndExpression__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1__1"
+    // InternalActionDSL.g:8541:1: rule__XAndExpression__Group_1__1 : rule__XAndExpression__Group_1__1__Impl ;
+    public final void rule__XAndExpression__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8545:1: ( rule__XAndExpression__Group_1__1__Impl )
+            // InternalActionDSL.g:8546:2: rule__XAndExpression__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1__1"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1__1__Impl"
+    // InternalActionDSL.g:8552:1: rule__XAndExpression__Group_1__1__Impl : ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) ;
+    public final void rule__XAndExpression__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8556:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalActionDSL.g:8557:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalActionDSL.g:8557:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalActionDSL.g:8558:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalActionDSL.g:8559:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalActionDSL.g:8559:3: rule__XAndExpression__RightOperandAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__RightOperandAssignment_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1_0__0"
+    // InternalActionDSL.g:8568:1: rule__XAndExpression__Group_1_0__0 : rule__XAndExpression__Group_1_0__0__Impl ;
+    public final void rule__XAndExpression__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8572:1: ( rule__XAndExpression__Group_1_0__0__Impl )
+            // InternalActionDSL.g:8573:2: rule__XAndExpression__Group_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1_0__0__Impl"
+    // InternalActionDSL.g:8579:1: rule__XAndExpression__Group_1_0__0__Impl : ( ( rule__XAndExpression__Group_1_0_0__0 ) ) ;
+    public final void rule__XAndExpression__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8583:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
+            // InternalActionDSL.g:8584:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:8584:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalActionDSL.g:8585:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:8586:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalActionDSL.g:8586:3: rule__XAndExpression__Group_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1_0_0__0"
+    // InternalActionDSL.g:8595:1: rule__XAndExpression__Group_1_0_0__0 : rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 ;
+    public final void rule__XAndExpression__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8599:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
+            // InternalActionDSL.g:8600:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_58);
+            rule__XAndExpression__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:8607:1: rule__XAndExpression__Group_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XAndExpression__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8611:1: ( ( () ) )
+            // InternalActionDSL.g:8612:1: ( () )
+            {
+            // InternalActionDSL.g:8612:1: ( () )
+            // InternalActionDSL.g:8613:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:8614:2: ()
+            // InternalActionDSL.g:8614:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1_0_0__1"
+    // InternalActionDSL.g:8622:1: rule__XAndExpression__Group_1_0_0__1 : rule__XAndExpression__Group_1_0_0__1__Impl ;
+    public final void rule__XAndExpression__Group_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8626:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
+            // InternalActionDSL.g:8627:2: rule__XAndExpression__Group_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__Group_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1_0_0__1"
+
+
+    // $ANTLR start "rule__XAndExpression__Group_1_0_0__1__Impl"
+    // InternalActionDSL.g:8633:1: rule__XAndExpression__Group_1_0_0__1__Impl : ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    public final void rule__XAndExpression__Group_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8637:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalActionDSL.g:8638:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalActionDSL.g:8638:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalActionDSL.g:8639:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:8640:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalActionDSL.g:8640:3: rule__XAndExpression__FeatureAssignment_1_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAndExpression__FeatureAssignment_1_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__Group_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group__0"
+    // InternalActionDSL.g:8649:1: rule__XEqualityExpression__Group__0 : rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 ;
+    public final void rule__XEqualityExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8653:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
+            // InternalActionDSL.g:8654:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
+            {
+            pushFollow(FOLLOW_60);
+            rule__XEqualityExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group__0"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group__0__Impl"
+    // InternalActionDSL.g:8661:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
+    public final void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8665:1: ( ( ruleXRelationalExpression ) )
+            // InternalActionDSL.g:8666:1: ( ruleXRelationalExpression )
+            {
+            // InternalActionDSL.g:8666:1: ( ruleXRelationalExpression )
+            // InternalActionDSL.g:8667:2: ruleXRelationalExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group__1"
+    // InternalActionDSL.g:8676:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
+    public final void rule__XEqualityExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8680:1: ( rule__XEqualityExpression__Group__1__Impl )
+            // InternalActionDSL.g:8681:2: rule__XEqualityExpression__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group__1"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group__1__Impl"
+    // InternalActionDSL.g:8687:1: rule__XEqualityExpression__Group__1__Impl : ( ( rule__XEqualityExpression__Group_1__0 )* ) ;
+    public final void rule__XEqualityExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8691:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
+            // InternalActionDSL.g:8692:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            {
+            // InternalActionDSL.g:8692:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalActionDSL.g:8693:2: ( rule__XEqualityExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:8694:2: ( rule__XEqualityExpression__Group_1__0 )*
+            loop84:
+            do {
+                int alt84=2;
+                switch ( input.LA(1) ) {
+                case 23:
+                    {
+                    int LA84_2 = input.LA(2);
+
+                    if ( (synpred150_InternalActionDSL()) ) {
+                        alt84=1;
+                    }
+
+
+                    }
+                    break;
+                case 24:
+                    {
+                    int LA84_3 = input.LA(2);
+
+                    if ( (synpred150_InternalActionDSL()) ) {
+                        alt84=1;
+                    }
+
+
+                    }
+                    break;
+                case 25:
+                    {
+                    int LA84_4 = input.LA(2);
+
+                    if ( (synpred150_InternalActionDSL()) ) {
+                        alt84=1;
+                    }
+
+
+                    }
+                    break;
+                case 26:
+                    {
+                    int LA84_5 = input.LA(2);
+
+                    if ( (synpred150_InternalActionDSL()) ) {
+                        alt84=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt84) {
+            	case 1 :
+            	    // InternalActionDSL.g:8694:3: rule__XEqualityExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_61);
+            	    rule__XEqualityExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop84;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1__0"
+    // InternalActionDSL.g:8703:1: rule__XEqualityExpression__Group_1__0 : rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 ;
+    public final void rule__XEqualityExpression__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8707:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
+            // InternalActionDSL.g:8708:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XEqualityExpression__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1__0"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1__0__Impl"
+    // InternalActionDSL.g:8715:1: rule__XEqualityExpression__Group_1__0__Impl : ( ( rule__XEqualityExpression__Group_1_0__0 ) ) ;
+    public final void rule__XEqualityExpression__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8719:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
+            // InternalActionDSL.g:8720:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            {
+            // InternalActionDSL.g:8720:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalActionDSL.g:8721:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalActionDSL.g:8722:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalActionDSL.g:8722:3: rule__XEqualityExpression__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1__1"
+    // InternalActionDSL.g:8730:1: rule__XEqualityExpression__Group_1__1 : rule__XEqualityExpression__Group_1__1__Impl ;
+    public final void rule__XEqualityExpression__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8734:1: ( rule__XEqualityExpression__Group_1__1__Impl )
+            // InternalActionDSL.g:8735:2: rule__XEqualityExpression__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1__1"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1__1__Impl"
+    // InternalActionDSL.g:8741:1: rule__XEqualityExpression__Group_1__1__Impl : ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) ;
+    public final void rule__XEqualityExpression__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8745:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalActionDSL.g:8746:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalActionDSL.g:8746:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalActionDSL.g:8747:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalActionDSL.g:8748:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalActionDSL.g:8748:3: rule__XEqualityExpression__RightOperandAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__RightOperandAssignment_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1_0__0"
+    // InternalActionDSL.g:8757:1: rule__XEqualityExpression__Group_1_0__0 : rule__XEqualityExpression__Group_1_0__0__Impl ;
+    public final void rule__XEqualityExpression__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8761:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
+            // InternalActionDSL.g:8762:2: rule__XEqualityExpression__Group_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1_0__0__Impl"
+    // InternalActionDSL.g:8768:1: rule__XEqualityExpression__Group_1_0__0__Impl : ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) ;
+    public final void rule__XEqualityExpression__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8772:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
+            // InternalActionDSL.g:8773:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:8773:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalActionDSL.g:8774:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:8775:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalActionDSL.g:8775:3: rule__XEqualityExpression__Group_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0"
+    // InternalActionDSL.g:8784:1: rule__XEqualityExpression__Group_1_0_0__0 : rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 ;
+    public final void rule__XEqualityExpression__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8788:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
+            // InternalActionDSL.g:8789:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_60);
+            rule__XEqualityExpression__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:8796:1: rule__XEqualityExpression__Group_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XEqualityExpression__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8800:1: ( ( () ) )
+            // InternalActionDSL.g:8801:1: ( () )
+            {
+            // InternalActionDSL.g:8801:1: ( () )
+            // InternalActionDSL.g:8802:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:8803:2: ()
+            // InternalActionDSL.g:8803:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1"
+    // InternalActionDSL.g:8811:1: rule__XEqualityExpression__Group_1_0_0__1 : rule__XEqualityExpression__Group_1_0_0__1__Impl ;
+    public final void rule__XEqualityExpression__Group_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8815:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
+            // InternalActionDSL.g:8816:2: rule__XEqualityExpression__Group_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__Group_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1_0_0__1"
+
+
+    // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1__Impl"
+    // InternalActionDSL.g:8822:1: rule__XEqualityExpression__Group_1_0_0__1__Impl : ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    public final void rule__XEqualityExpression__Group_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8826:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalActionDSL.g:8827:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalActionDSL.g:8827:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalActionDSL.g:8828:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:8829:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalActionDSL.g:8829:3: rule__XEqualityExpression__FeatureAssignment_1_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XEqualityExpression__FeatureAssignment_1_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__Group_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group__0"
+    // InternalActionDSL.g:8838:1: rule__XRelationalExpression__Group__0 : rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 ;
+    public final void rule__XRelationalExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8842:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
+            // InternalActionDSL.g:8843:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
+            {
+            pushFollow(FOLLOW_62);
+            rule__XRelationalExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group__0"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group__0__Impl"
+    // InternalActionDSL.g:8850:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
+    public final void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8854:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalActionDSL.g:8855:1: ( ruleXOtherOperatorExpression )
+            {
+            // InternalActionDSL.g:8855:1: ( ruleXOtherOperatorExpression )
+            // InternalActionDSL.g:8856:2: ruleXOtherOperatorExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group__1"
+    // InternalActionDSL.g:8865:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
+    public final void rule__XRelationalExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8869:1: ( rule__XRelationalExpression__Group__1__Impl )
+            // InternalActionDSL.g:8870:2: rule__XRelationalExpression__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group__1"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group__1__Impl"
+    // InternalActionDSL.g:8876:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
+    public final void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8880:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
+            // InternalActionDSL.g:8881:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            {
+            // InternalActionDSL.g:8881:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalActionDSL.g:8882:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); 
+            }
+            // InternalActionDSL.g:8883:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            loop85:
+            do {
+                int alt85=2;
+                switch ( input.LA(1) ) {
+                case 29:
+                    {
+                    int LA85_2 = input.LA(2);
+
+                    if ( (synpred151_InternalActionDSL()) ) {
+                        alt85=1;
+                    }
+
+
+                    }
+                    break;
+                case 28:
+                    {
+                    int LA85_3 = input.LA(2);
+
+                    if ( (synpred151_InternalActionDSL()) ) {
+                        alt85=1;
+                    }
+
+
+                    }
+                    break;
+                case 107:
+                    {
+                    int LA85_4 = input.LA(2);
+
+                    if ( (synpred151_InternalActionDSL()) ) {
+                        alt85=1;
+                    }
+
+
+                    }
+                    break;
+                case 27:
+                    {
+                    int LA85_5 = input.LA(2);
+
+                    if ( (synpred151_InternalActionDSL()) ) {
+                        alt85=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt85) {
+            	case 1 :
+            	    // InternalActionDSL.g:8883:3: rule__XRelationalExpression__Alternatives_1
+            	    {
+            	    pushFollow(FOLLOW_63);
+            	    rule__XRelationalExpression__Alternatives_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop85;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0__0"
+    // InternalActionDSL.g:8892:1: rule__XRelationalExpression__Group_1_0__0 : rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 ;
+    public final void rule__XRelationalExpression__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8896:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
+            // InternalActionDSL.g:8897:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__XRelationalExpression__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0__0__Impl"
+    // InternalActionDSL.g:8904:1: rule__XRelationalExpression__Group_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) ;
+    public final void rule__XRelationalExpression__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8908:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
+            // InternalActionDSL.g:8909:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:8909:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalActionDSL.g:8910:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:8911:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalActionDSL.g:8911:3: rule__XRelationalExpression__Group_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0__1"
+    // InternalActionDSL.g:8919:1: rule__XRelationalExpression__Group_1_0__1 : rule__XRelationalExpression__Group_1_0__1__Impl ;
+    public final void rule__XRelationalExpression__Group_1_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8923:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
+            // InternalActionDSL.g:8924:2: rule__XRelationalExpression__Group_1_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0__1"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0__1__Impl"
+    // InternalActionDSL.g:8930:1: rule__XRelationalExpression__Group_1_0__1__Impl : ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) ;
+    public final void rule__XRelationalExpression__Group_1_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8934:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
+            // InternalActionDSL.g:8935:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            {
+            // InternalActionDSL.g:8935:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalActionDSL.g:8936:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); 
+            }
+            // InternalActionDSL.g:8937:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalActionDSL.g:8937:3: rule__XRelationalExpression__TypeAssignment_1_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__TypeAssignment_1_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0__1__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0"
+    // InternalActionDSL.g:8946:1: rule__XRelationalExpression__Group_1_0_0__0 : rule__XRelationalExpression__Group_1_0_0__0__Impl ;
+    public final void rule__XRelationalExpression__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8950:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
+            // InternalActionDSL.g:8951:2: rule__XRelationalExpression__Group_1_0_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:8957:1: rule__XRelationalExpression__Group_1_0_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) ;
+    public final void rule__XRelationalExpression__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8961:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
+            // InternalActionDSL.g:8962:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            {
+            // InternalActionDSL.g:8962:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalActionDSL.g:8963:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:8964:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalActionDSL.g:8964:3: rule__XRelationalExpression__Group_1_0_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_0_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0"
+    // InternalActionDSL.g:8973:1: rule__XRelationalExpression__Group_1_0_0_0__0 : rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 ;
+    public final void rule__XRelationalExpression__Group_1_0_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8977:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
+            // InternalActionDSL.g:8978:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
+            {
+            pushFollow(FOLLOW_65);
+            rule__XRelationalExpression__Group_1_0_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_0_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0_0_0__0"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0__Impl"
+    // InternalActionDSL.g:8985:1: rule__XRelationalExpression__Group_1_0_0_0__0__Impl : ( () ) ;
+    public final void rule__XRelationalExpression__Group_1_0_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:8989:1: ( ( () ) )
+            // InternalActionDSL.g:8990:1: ( () )
+            {
+            // InternalActionDSL.g:8990:1: ( () )
+            // InternalActionDSL.g:8991:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); 
+            }
+            // InternalActionDSL.g:8992:2: ()
+            // InternalActionDSL.g:8992:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1"
+    // InternalActionDSL.g:9000:1: rule__XRelationalExpression__Group_1_0_0_0__1 : rule__XRelationalExpression__Group_1_0_0_0__1__Impl ;
+    public final void rule__XRelationalExpression__Group_1_0_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9004:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
+            // InternalActionDSL.g:9005:2: rule__XRelationalExpression__Group_1_0_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_0_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0_0_0__1"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1__Impl"
+    // InternalActionDSL.g:9011:1: rule__XRelationalExpression__Group_1_0_0_0__1__Impl : ( 'instanceof' ) ;
+    public final void rule__XRelationalExpression__Group_1_0_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9015:1: ( ( 'instanceof' ) )
+            // InternalActionDSL.g:9016:1: ( 'instanceof' )
+            {
+            // InternalActionDSL.g:9016:1: ( 'instanceof' )
+            // InternalActionDSL.g:9017:2: 'instanceof'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
+            }
+            match(input,107,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_0_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1__0"
+    // InternalActionDSL.g:9027:1: rule__XRelationalExpression__Group_1_1__0 : rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 ;
+    public final void rule__XRelationalExpression__Group_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9031:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
+            // InternalActionDSL.g:9032:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XRelationalExpression__Group_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1__0"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1__0__Impl"
+    // InternalActionDSL.g:9039:1: rule__XRelationalExpression__Group_1_1__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) ;
+    public final void rule__XRelationalExpression__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9043:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
+            // InternalActionDSL.g:9044:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            {
+            // InternalActionDSL.g:9044:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalActionDSL.g:9045:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); 
+            }
+            // InternalActionDSL.g:9046:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalActionDSL.g:9046:3: rule__XRelationalExpression__Group_1_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1__1"
+    // InternalActionDSL.g:9054:1: rule__XRelationalExpression__Group_1_1__1 : rule__XRelationalExpression__Group_1_1__1__Impl ;
+    public final void rule__XRelationalExpression__Group_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9058:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
+            // InternalActionDSL.g:9059:2: rule__XRelationalExpression__Group_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1__1"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1__1__Impl"
+    // InternalActionDSL.g:9065:1: rule__XRelationalExpression__Group_1_1__1__Impl : ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) ;
+    public final void rule__XRelationalExpression__Group_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9069:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
+            // InternalActionDSL.g:9070:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            {
+            // InternalActionDSL.g:9070:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalActionDSL.g:9071:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); 
+            }
+            // InternalActionDSL.g:9072:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalActionDSL.g:9072:3: rule__XRelationalExpression__RightOperandAssignment_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__RightOperandAssignment_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0"
+    // InternalActionDSL.g:9081:1: rule__XRelationalExpression__Group_1_1_0__0 : rule__XRelationalExpression__Group_1_1_0__0__Impl ;
+    public final void rule__XRelationalExpression__Group_1_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9085:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
+            // InternalActionDSL.g:9086:2: rule__XRelationalExpression__Group_1_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1_0__0"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0__Impl"
+    // InternalActionDSL.g:9092:1: rule__XRelationalExpression__Group_1_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) ;
+    public final void rule__XRelationalExpression__Group_1_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9096:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
+            // InternalActionDSL.g:9097:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:9097:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalActionDSL.g:9098:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalActionDSL.g:9099:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalActionDSL.g:9099:3: rule__XRelationalExpression__Group_1_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0"
+    // InternalActionDSL.g:9108:1: rule__XRelationalExpression__Group_1_1_0_0__0 : rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 ;
+    public final void rule__XRelationalExpression__Group_1_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9112:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
+            // InternalActionDSL.g:9113:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_62);
+            rule__XRelationalExpression__Group_1_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1_0_0__0"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0__Impl"
+    // InternalActionDSL.g:9120:1: rule__XRelationalExpression__Group_1_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XRelationalExpression__Group_1_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9124:1: ( ( () ) )
+            // InternalActionDSL.g:9125:1: ( () )
+            {
+            // InternalActionDSL.g:9125:1: ( () )
+            // InternalActionDSL.g:9126:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:9127:2: ()
+            // InternalActionDSL.g:9127:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1"
+    // InternalActionDSL.g:9135:1: rule__XRelationalExpression__Group_1_1_0_0__1 : rule__XRelationalExpression__Group_1_1_0_0__1__Impl ;
+    public final void rule__XRelationalExpression__Group_1_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9139:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
+            // InternalActionDSL.g:9140:2: rule__XRelationalExpression__Group_1_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__Group_1_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1_0_0__1"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1__Impl"
+    // InternalActionDSL.g:9146:1: rule__XRelationalExpression__Group_1_1_0_0__1__Impl : ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) ;
+    public final void rule__XRelationalExpression__Group_1_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9150:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalActionDSL.g:9151:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            {
+            // InternalActionDSL.g:9151:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalActionDSL.g:9152:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:9153:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalActionDSL.g:9153:3: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Group_1_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__OpCompare__Group_1__0"
+    // InternalActionDSL.g:9162:1: rule__OpCompare__Group_1__0 : rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 ;
+    public final void rule__OpCompare__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9166:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
+            // InternalActionDSL.g:9167:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
+            {
+            pushFollow(FOLLOW_48);
+            rule__OpCompare__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpCompare__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpCompare__Group_1__0"
+
+
+    // $ANTLR start "rule__OpCompare__Group_1__0__Impl"
+    // InternalActionDSL.g:9174:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
+    public final void rule__OpCompare__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9178:1: ( ( '<' ) )
+            // InternalActionDSL.g:9179:1: ( '<' )
+            {
+            // InternalActionDSL.g:9179:1: ( '<' )
+            // InternalActionDSL.g:9180:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
+            }
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpCompare__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__OpCompare__Group_1__1"
+    // InternalActionDSL.g:9189:1: rule__OpCompare__Group_1__1 : rule__OpCompare__Group_1__1__Impl ;
+    public final void rule__OpCompare__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9193:1: ( rule__OpCompare__Group_1__1__Impl )
+            // InternalActionDSL.g:9194:2: rule__OpCompare__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpCompare__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpCompare__Group_1__1"
+
+
+    // $ANTLR start "rule__OpCompare__Group_1__1__Impl"
+    // InternalActionDSL.g:9200:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
+    public final void rule__OpCompare__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9204:1: ( ( '=' ) )
+            // InternalActionDSL.g:9205:1: ( '=' )
+            {
+            // InternalActionDSL.g:9205:1: ( '=' )
+            // InternalActionDSL.g:9206:2: '='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
+            }
+            match(input,13,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpCompare__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group__0"
+    // InternalActionDSL.g:9216:1: rule__XOtherOperatorExpression__Group__0 : rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 ;
+    public final void rule__XOtherOperatorExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9220:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
+            // InternalActionDSL.g:9221:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
+            {
+            pushFollow(FOLLOW_66);
+            rule__XOtherOperatorExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group__0"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group__0__Impl"
+    // InternalActionDSL.g:9228:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
+    public final void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9232:1: ( ( ruleXAdditiveExpression ) )
+            // InternalActionDSL.g:9233:1: ( ruleXAdditiveExpression )
+            {
+            // InternalActionDSL.g:9233:1: ( ruleXAdditiveExpression )
+            // InternalActionDSL.g:9234:2: ruleXAdditiveExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group__1"
+    // InternalActionDSL.g:9243:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
+    public final void rule__XOtherOperatorExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9247:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
+            // InternalActionDSL.g:9248:2: rule__XOtherOperatorExpression__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group__1"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group__1__Impl"
+    // InternalActionDSL.g:9254:1: rule__XOtherOperatorExpression__Group__1__Impl : ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) ;
+    public final void rule__XOtherOperatorExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9258:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
+            // InternalActionDSL.g:9259:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            {
+            // InternalActionDSL.g:9259:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalActionDSL.g:9260:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:9261:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            loop86:
+            do {
+                int alt86=2;
+                alt86 = dfa86.predict(input);
+                switch (alt86) {
+            	case 1 :
+            	    // InternalActionDSL.g:9261:3: rule__XOtherOperatorExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_67);
+            	    rule__XOtherOperatorExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop86;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0"
+    // InternalActionDSL.g:9270:1: rule__XOtherOperatorExpression__Group_1__0 : rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 ;
+    public final void rule__XOtherOperatorExpression__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9274:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
+            // InternalActionDSL.g:9275:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XOtherOperatorExpression__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1__0"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0__Impl"
+    // InternalActionDSL.g:9282:1: rule__XOtherOperatorExpression__Group_1__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) ;
+    public final void rule__XOtherOperatorExpression__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9286:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
+            // InternalActionDSL.g:9287:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            {
+            // InternalActionDSL.g:9287:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalActionDSL.g:9288:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalActionDSL.g:9289:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalActionDSL.g:9289:3: rule__XOtherOperatorExpression__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1"
+    // InternalActionDSL.g:9297:1: rule__XOtherOperatorExpression__Group_1__1 : rule__XOtherOperatorExpression__Group_1__1__Impl ;
+    public final void rule__XOtherOperatorExpression__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9301:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
+            // InternalActionDSL.g:9302:2: rule__XOtherOperatorExpression__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1__1"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1__Impl"
+    // InternalActionDSL.g:9308:1: rule__XOtherOperatorExpression__Group_1__1__Impl : ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) ;
+    public final void rule__XOtherOperatorExpression__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9312:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalActionDSL.g:9313:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalActionDSL.g:9313:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalActionDSL.g:9314:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalActionDSL.g:9315:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalActionDSL.g:9315:3: rule__XOtherOperatorExpression__RightOperandAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__RightOperandAssignment_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0"
+    // InternalActionDSL.g:9324:1: rule__XOtherOperatorExpression__Group_1_0__0 : rule__XOtherOperatorExpression__Group_1_0__0__Impl ;
+    public final void rule__XOtherOperatorExpression__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9328:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
+            // InternalActionDSL.g:9329:2: rule__XOtherOperatorExpression__Group_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0__Impl"
+    // InternalActionDSL.g:9335:1: rule__XOtherOperatorExpression__Group_1_0__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) ;
+    public final void rule__XOtherOperatorExpression__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9339:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
+            // InternalActionDSL.g:9340:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:9340:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalActionDSL.g:9341:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:9342:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalActionDSL.g:9342:3: rule__XOtherOperatorExpression__Group_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0"
+    // InternalActionDSL.g:9351:1: rule__XOtherOperatorExpression__Group_1_0_0__0 : rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 ;
+    public final void rule__XOtherOperatorExpression__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9355:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
+            // InternalActionDSL.g:9356:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_66);
+            rule__XOtherOperatorExpression__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:9363:1: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XOtherOperatorExpression__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9367:1: ( ( () ) )
+            // InternalActionDSL.g:9368:1: ( () )
+            {
+            // InternalActionDSL.g:9368:1: ( () )
+            // InternalActionDSL.g:9369:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:9370:2: ()
+            // InternalActionDSL.g:9370:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1"
+    // InternalActionDSL.g:9378:1: rule__XOtherOperatorExpression__Group_1_0_0__1 : rule__XOtherOperatorExpression__Group_1_0_0__1__Impl ;
+    public final void rule__XOtherOperatorExpression__Group_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9382:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
+            // InternalActionDSL.g:9383:2: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__Group_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1_0_0__1"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1__Impl"
+    // InternalActionDSL.g:9389:1: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl : ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    public final void rule__XOtherOperatorExpression__Group_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9393:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalActionDSL.g:9394:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalActionDSL.g:9394:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalActionDSL.g:9395:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:9396:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalActionDSL.g:9396:3: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__Group_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_2__0"
+    // InternalActionDSL.g:9405:1: rule__OpOther__Group_2__0 : rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 ;
+    public final void rule__OpOther__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9409:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
+            // InternalActionDSL.g:9410:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
+            {
+            pushFollow(FOLLOW_68);
+            rule__OpOther__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_2__0"
+
+
+    // $ANTLR start "rule__OpOther__Group_2__0__Impl"
+    // InternalActionDSL.g:9417:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9421:1: ( ( '>' ) )
+            // InternalActionDSL.g:9422:1: ( '>' )
+            {
+            // InternalActionDSL.g:9422:1: ( '>' )
+            // InternalActionDSL.g:9423:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_2__1"
+    // InternalActionDSL.g:9432:1: rule__OpOther__Group_2__1 : rule__OpOther__Group_2__1__Impl ;
+    public final void rule__OpOther__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9436:1: ( rule__OpOther__Group_2__1__Impl )
+            // InternalActionDSL.g:9437:2: rule__OpOther__Group_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_2__1"
+
+
+    // $ANTLR start "rule__OpOther__Group_2__1__Impl"
+    // InternalActionDSL.g:9443:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
+    public final void rule__OpOther__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9447:1: ( ( '..' ) )
+            // InternalActionDSL.g:9448:1: ( '..' )
+            {
+            // InternalActionDSL.g:9448:1: ( '..' )
+            // InternalActionDSL.g:9449:2: '..'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
+            }
+            match(input,32,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_5__0"
+    // InternalActionDSL.g:9459:1: rule__OpOther__Group_5__0 : rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 ;
+    public final void rule__OpOther__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9463:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
+            // InternalActionDSL.g:9464:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
+            {
+            pushFollow(FOLLOW_69);
+            rule__OpOther__Group_5__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_5__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5__0"
+
+
+    // $ANTLR start "rule__OpOther__Group_5__0__Impl"
+    // InternalActionDSL.g:9471:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9475:1: ( ( '>' ) )
+            // InternalActionDSL.g:9476:1: ( '>' )
+            {
+            // InternalActionDSL.g:9476:1: ( '>' )
+            // InternalActionDSL.g:9477:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_5__1"
+    // InternalActionDSL.g:9486:1: rule__OpOther__Group_5__1 : rule__OpOther__Group_5__1__Impl ;
+    public final void rule__OpOther__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9490:1: ( rule__OpOther__Group_5__1__Impl )
+            // InternalActionDSL.g:9491:2: rule__OpOther__Group_5__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_5__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5__1"
+
+
+    // $ANTLR start "rule__OpOther__Group_5__1__Impl"
+    // InternalActionDSL.g:9497:1: rule__OpOther__Group_5__1__Impl : ( ( rule__OpOther__Alternatives_5_1 ) ) ;
+    public final void rule__OpOther__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9501:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
+            // InternalActionDSL.g:9502:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            {
+            // InternalActionDSL.g:9502:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalActionDSL.g:9503:2: ( rule__OpOther__Alternatives_5_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); 
+            }
+            // InternalActionDSL.g:9504:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalActionDSL.g:9504:3: rule__OpOther__Alternatives_5_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Alternatives_5_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_5_1_0__0"
+    // InternalActionDSL.g:9513:1: rule__OpOther__Group_5_1_0__0 : rule__OpOther__Group_5_1_0__0__Impl ;
+    public final void rule__OpOther__Group_5_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9517:1: ( rule__OpOther__Group_5_1_0__0__Impl )
+            // InternalActionDSL.g:9518:2: rule__OpOther__Group_5_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_5_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5_1_0__0"
+
+
+    // $ANTLR start "rule__OpOther__Group_5_1_0__0__Impl"
+    // InternalActionDSL.g:9524:1: rule__OpOther__Group_5_1_0__0__Impl : ( ( rule__OpOther__Group_5_1_0_0__0 ) ) ;
+    public final void rule__OpOther__Group_5_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9528:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
+            // InternalActionDSL.g:9529:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:9529:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalActionDSL.g:9530:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); 
+            }
+            // InternalActionDSL.g:9531:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalActionDSL.g:9531:3: rule__OpOther__Group_5_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_5_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_5_1_0_0__0"
+    // InternalActionDSL.g:9540:1: rule__OpOther__Group_5_1_0_0__0 : rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 ;
+    public final void rule__OpOther__Group_5_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9544:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
+            // InternalActionDSL.g:9545:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
+            {
+            pushFollow(FOLLOW_69);
+            rule__OpOther__Group_5_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_5_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5_1_0_0__0"
+
+
+    // $ANTLR start "rule__OpOther__Group_5_1_0_0__0__Impl"
+    // InternalActionDSL.g:9552:1: rule__OpOther__Group_5_1_0_0__0__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_5_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9556:1: ( ( '>' ) )
+            // InternalActionDSL.g:9557:1: ( '>' )
+            {
+            // InternalActionDSL.g:9557:1: ( '>' )
+            // InternalActionDSL.g:9558:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_5_1_0_0__1"
+    // InternalActionDSL.g:9567:1: rule__OpOther__Group_5_1_0_0__1 : rule__OpOther__Group_5_1_0_0__1__Impl ;
+    public final void rule__OpOther__Group_5_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9571:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
+            // InternalActionDSL.g:9572:2: rule__OpOther__Group_5_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_5_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5_1_0_0__1"
+
+
+    // $ANTLR start "rule__OpOther__Group_5_1_0_0__1__Impl"
+    // InternalActionDSL.g:9578:1: rule__OpOther__Group_5_1_0_0__1__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_5_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9582:1: ( ( '>' ) )
+            // InternalActionDSL.g:9583:1: ( '>' )
+            {
+            // InternalActionDSL.g:9583:1: ( '>' )
+            // InternalActionDSL.g:9584:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_5_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_6__0"
+    // InternalActionDSL.g:9594:1: rule__OpOther__Group_6__0 : rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 ;
+    public final void rule__OpOther__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9598:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
+            // InternalActionDSL.g:9599:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
+            {
+            pushFollow(FOLLOW_70);
+            rule__OpOther__Group_6__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_6__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6__0"
+
+
+    // $ANTLR start "rule__OpOther__Group_6__0__Impl"
+    // InternalActionDSL.g:9606:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
+    public final void rule__OpOther__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9610:1: ( ( '<' ) )
+            // InternalActionDSL.g:9611:1: ( '<' )
+            {
+            // InternalActionDSL.g:9611:1: ( '<' )
+            // InternalActionDSL.g:9612:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
+            }
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_6__1"
+    // InternalActionDSL.g:9621:1: rule__OpOther__Group_6__1 : rule__OpOther__Group_6__1__Impl ;
+    public final void rule__OpOther__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9625:1: ( rule__OpOther__Group_6__1__Impl )
+            // InternalActionDSL.g:9626:2: rule__OpOther__Group_6__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_6__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6__1"
+
+
+    // $ANTLR start "rule__OpOther__Group_6__1__Impl"
+    // InternalActionDSL.g:9632:1: rule__OpOther__Group_6__1__Impl : ( ( rule__OpOther__Alternatives_6_1 ) ) ;
+    public final void rule__OpOther__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9636:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
+            // InternalActionDSL.g:9637:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            {
+            // InternalActionDSL.g:9637:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalActionDSL.g:9638:2: ( rule__OpOther__Alternatives_6_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); 
+            }
+            // InternalActionDSL.g:9639:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalActionDSL.g:9639:3: rule__OpOther__Alternatives_6_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Alternatives_6_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_6_1_0__0"
+    // InternalActionDSL.g:9648:1: rule__OpOther__Group_6_1_0__0 : rule__OpOther__Group_6_1_0__0__Impl ;
+    public final void rule__OpOther__Group_6_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9652:1: ( rule__OpOther__Group_6_1_0__0__Impl )
+            // InternalActionDSL.g:9653:2: rule__OpOther__Group_6_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_6_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6_1_0__0"
+
+
+    // $ANTLR start "rule__OpOther__Group_6_1_0__0__Impl"
+    // InternalActionDSL.g:9659:1: rule__OpOther__Group_6_1_0__0__Impl : ( ( rule__OpOther__Group_6_1_0_0__0 ) ) ;
+    public final void rule__OpOther__Group_6_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9663:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
+            // InternalActionDSL.g:9664:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:9664:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalActionDSL.g:9665:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); 
+            }
+            // InternalActionDSL.g:9666:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalActionDSL.g:9666:3: rule__OpOther__Group_6_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_6_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_6_1_0_0__0"
+    // InternalActionDSL.g:9675:1: rule__OpOther__Group_6_1_0_0__0 : rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 ;
+    public final void rule__OpOther__Group_6_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9679:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
+            // InternalActionDSL.g:9680:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
+            {
+            pushFollow(FOLLOW_54);
+            rule__OpOther__Group_6_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_6_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6_1_0_0__0"
+
+
+    // $ANTLR start "rule__OpOther__Group_6_1_0_0__0__Impl"
+    // InternalActionDSL.g:9687:1: rule__OpOther__Group_6_1_0_0__0__Impl : ( '<' ) ;
+    public final void rule__OpOther__Group_6_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9691:1: ( ( '<' ) )
+            // InternalActionDSL.g:9692:1: ( '<' )
+            {
+            // InternalActionDSL.g:9692:1: ( '<' )
+            // InternalActionDSL.g:9693:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
+            }
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__OpOther__Group_6_1_0_0__1"
+    // InternalActionDSL.g:9702:1: rule__OpOther__Group_6_1_0_0__1 : rule__OpOther__Group_6_1_0_0__1__Impl ;
+    public final void rule__OpOther__Group_6_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9706:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
+            // InternalActionDSL.g:9707:2: rule__OpOther__Group_6_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__OpOther__Group_6_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6_1_0_0__1"
+
+
+    // $ANTLR start "rule__OpOther__Group_6_1_0_0__1__Impl"
+    // InternalActionDSL.g:9713:1: rule__OpOther__Group_6_1_0_0__1__Impl : ( '<' ) ;
+    public final void rule__OpOther__Group_6_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9717:1: ( ( '<' ) )
+            // InternalActionDSL.g:9718:1: ( '<' )
+            {
+            // InternalActionDSL.g:9718:1: ( '<' )
+            // InternalActionDSL.g:9719:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
+            }
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpOther__Group_6_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group__0"
+    // InternalActionDSL.g:9729:1: rule__XAdditiveExpression__Group__0 : rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 ;
+    public final void rule__XAdditiveExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9733:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
+            // InternalActionDSL.g:9734:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
+            {
+            pushFollow(FOLLOW_71);
+            rule__XAdditiveExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group__0"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group__0__Impl"
+    // InternalActionDSL.g:9741:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
+    public final void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9745:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalActionDSL.g:9746:1: ( ruleXMultiplicativeExpression )
+            {
+            // InternalActionDSL.g:9746:1: ( ruleXMultiplicativeExpression )
+            // InternalActionDSL.g:9747:2: ruleXMultiplicativeExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group__1"
+    // InternalActionDSL.g:9756:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
+    public final void rule__XAdditiveExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9760:1: ( rule__XAdditiveExpression__Group__1__Impl )
+            // InternalActionDSL.g:9761:2: rule__XAdditiveExpression__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group__1"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group__1__Impl"
+    // InternalActionDSL.g:9767:1: rule__XAdditiveExpression__Group__1__Impl : ( ( rule__XAdditiveExpression__Group_1__0 )* ) ;
+    public final void rule__XAdditiveExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9771:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
+            // InternalActionDSL.g:9772:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            {
+            // InternalActionDSL.g:9772:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalActionDSL.g:9773:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:9774:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            loop87:
+            do {
+                int alt87=2;
+                int LA87_0 = input.LA(1);
+
+                if ( (LA87_0==37) ) {
+                    int LA87_2 = input.LA(2);
+
+                    if ( (synpred153_InternalActionDSL()) ) {
+                        alt87=1;
+                    }
+
+
+                }
+                else if ( (LA87_0==36) ) {
+                    int LA87_3 = input.LA(2);
+
+                    if ( (synpred153_InternalActionDSL()) ) {
+                        alt87=1;
+                    }
+
+
+                }
+
+
+                switch (alt87) {
+            	case 1 :
+            	    // InternalActionDSL.g:9774:3: rule__XAdditiveExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_72);
+            	    rule__XAdditiveExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop87;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1__0"
+    // InternalActionDSL.g:9783:1: rule__XAdditiveExpression__Group_1__0 : rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 ;
+    public final void rule__XAdditiveExpression__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9787:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
+            // InternalActionDSL.g:9788:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XAdditiveExpression__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1__0"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1__0__Impl"
+    // InternalActionDSL.g:9795:1: rule__XAdditiveExpression__Group_1__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) ;
+    public final void rule__XAdditiveExpression__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9799:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
+            // InternalActionDSL.g:9800:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            {
+            // InternalActionDSL.g:9800:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalActionDSL.g:9801:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalActionDSL.g:9802:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalActionDSL.g:9802:3: rule__XAdditiveExpression__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1__1"
+    // InternalActionDSL.g:9810:1: rule__XAdditiveExpression__Group_1__1 : rule__XAdditiveExpression__Group_1__1__Impl ;
+    public final void rule__XAdditiveExpression__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9814:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
+            // InternalActionDSL.g:9815:2: rule__XAdditiveExpression__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1__1"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1__1__Impl"
+    // InternalActionDSL.g:9821:1: rule__XAdditiveExpression__Group_1__1__Impl : ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) ;
+    public final void rule__XAdditiveExpression__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9825:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalActionDSL.g:9826:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalActionDSL.g:9826:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalActionDSL.g:9827:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalActionDSL.g:9828:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalActionDSL.g:9828:3: rule__XAdditiveExpression__RightOperandAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__RightOperandAssignment_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0"
+    // InternalActionDSL.g:9837:1: rule__XAdditiveExpression__Group_1_0__0 : rule__XAdditiveExpression__Group_1_0__0__Impl ;
+    public final void rule__XAdditiveExpression__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9841:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
+            // InternalActionDSL.g:9842:2: rule__XAdditiveExpression__Group_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0__Impl"
+    // InternalActionDSL.g:9848:1: rule__XAdditiveExpression__Group_1_0__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) ;
+    public final void rule__XAdditiveExpression__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9852:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
+            // InternalActionDSL.g:9853:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:9853:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalActionDSL.g:9854:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:9855:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalActionDSL.g:9855:3: rule__XAdditiveExpression__Group_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0"
+    // InternalActionDSL.g:9864:1: rule__XAdditiveExpression__Group_1_0_0__0 : rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 ;
+    public final void rule__XAdditiveExpression__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9868:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
+            // InternalActionDSL.g:9869:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_71);
+            rule__XAdditiveExpression__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:9876:1: rule__XAdditiveExpression__Group_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XAdditiveExpression__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9880:1: ( ( () ) )
+            // InternalActionDSL.g:9881:1: ( () )
+            {
+            // InternalActionDSL.g:9881:1: ( () )
+            // InternalActionDSL.g:9882:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:9883:2: ()
+            // InternalActionDSL.g:9883:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1"
+    // InternalActionDSL.g:9891:1: rule__XAdditiveExpression__Group_1_0_0__1 : rule__XAdditiveExpression__Group_1_0_0__1__Impl ;
+    public final void rule__XAdditiveExpression__Group_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9895:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
+            // InternalActionDSL.g:9896:2: rule__XAdditiveExpression__Group_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__Group_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1_0_0__1"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1__Impl"
+    // InternalActionDSL.g:9902:1: rule__XAdditiveExpression__Group_1_0_0__1__Impl : ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    public final void rule__XAdditiveExpression__Group_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9906:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalActionDSL.g:9907:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalActionDSL.g:9907:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalActionDSL.g:9908:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:9909:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalActionDSL.g:9909:3: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XAdditiveExpression__FeatureAssignment_1_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__Group_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group__0"
+    // InternalActionDSL.g:9918:1: rule__XMultiplicativeExpression__Group__0 : rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 ;
+    public final void rule__XMultiplicativeExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9922:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
+            // InternalActionDSL.g:9923:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
+            {
+            pushFollow(FOLLOW_73);
+            rule__XMultiplicativeExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group__0"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group__0__Impl"
+    // InternalActionDSL.g:9930:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
+    public final void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9934:1: ( ( ruleXUnaryOperation ) )
+            // InternalActionDSL.g:9935:1: ( ruleXUnaryOperation )
+            {
+            // InternalActionDSL.g:9935:1: ( ruleXUnaryOperation )
+            // InternalActionDSL.g:9936:2: ruleXUnaryOperation
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group__1"
+    // InternalActionDSL.g:9945:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
+    public final void rule__XMultiplicativeExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9949:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
+            // InternalActionDSL.g:9950:2: rule__XMultiplicativeExpression__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group__1"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group__1__Impl"
+    // InternalActionDSL.g:9956:1: rule__XMultiplicativeExpression__Group__1__Impl : ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) ;
+    public final void rule__XMultiplicativeExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9960:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
+            // InternalActionDSL.g:9961:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            {
+            // InternalActionDSL.g:9961:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalActionDSL.g:9962:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:9963:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            loop88:
+            do {
+                int alt88=2;
+                switch ( input.LA(1) ) {
+                case 38:
+                    {
+                    int LA88_2 = input.LA(2);
+
+                    if ( (synpred154_InternalActionDSL()) ) {
+                        alt88=1;
+                    }
+
+
+                    }
+                    break;
+                case 39:
+                    {
+                    int LA88_3 = input.LA(2);
+
+                    if ( (synpred154_InternalActionDSL()) ) {
+                        alt88=1;
+                    }
+
+
+                    }
+                    break;
+                case 40:
+                    {
+                    int LA88_4 = input.LA(2);
+
+                    if ( (synpred154_InternalActionDSL()) ) {
+                        alt88=1;
+                    }
+
+
+                    }
+                    break;
+                case 41:
+                    {
+                    int LA88_5 = input.LA(2);
+
+                    if ( (synpred154_InternalActionDSL()) ) {
+                        alt88=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt88) {
+            	case 1 :
+            	    // InternalActionDSL.g:9963:3: rule__XMultiplicativeExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_74);
+            	    rule__XMultiplicativeExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop88;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0"
+    // InternalActionDSL.g:9972:1: rule__XMultiplicativeExpression__Group_1__0 : rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 ;
+    public final void rule__XMultiplicativeExpression__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9976:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
+            // InternalActionDSL.g:9977:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XMultiplicativeExpression__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1__0"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0__Impl"
+    // InternalActionDSL.g:9984:1: rule__XMultiplicativeExpression__Group_1__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) ;
+    public final void rule__XMultiplicativeExpression__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:9988:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
+            // InternalActionDSL.g:9989:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            {
+            // InternalActionDSL.g:9989:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalActionDSL.g:9990:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalActionDSL.g:9991:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalActionDSL.g:9991:3: rule__XMultiplicativeExpression__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1"
+    // InternalActionDSL.g:9999:1: rule__XMultiplicativeExpression__Group_1__1 : rule__XMultiplicativeExpression__Group_1__1__Impl ;
+    public final void rule__XMultiplicativeExpression__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10003:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
+            // InternalActionDSL.g:10004:2: rule__XMultiplicativeExpression__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1__1"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1__Impl"
+    // InternalActionDSL.g:10010:1: rule__XMultiplicativeExpression__Group_1__1__Impl : ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) ;
+    public final void rule__XMultiplicativeExpression__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10014:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalActionDSL.g:10015:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalActionDSL.g:10015:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalActionDSL.g:10016:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalActionDSL.g:10017:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalActionDSL.g:10017:3: rule__XMultiplicativeExpression__RightOperandAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__RightOperandAssignment_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0"
+    // InternalActionDSL.g:10026:1: rule__XMultiplicativeExpression__Group_1_0__0 : rule__XMultiplicativeExpression__Group_1_0__0__Impl ;
+    public final void rule__XMultiplicativeExpression__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10030:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
+            // InternalActionDSL.g:10031:2: rule__XMultiplicativeExpression__Group_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0__Impl"
+    // InternalActionDSL.g:10037:1: rule__XMultiplicativeExpression__Group_1_0__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) ;
+    public final void rule__XMultiplicativeExpression__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10041:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
+            // InternalActionDSL.g:10042:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:10042:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalActionDSL.g:10043:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:10044:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalActionDSL.g:10044:3: rule__XMultiplicativeExpression__Group_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0"
+    // InternalActionDSL.g:10053:1: rule__XMultiplicativeExpression__Group_1_0_0__0 : rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 ;
+    public final void rule__XMultiplicativeExpression__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10057:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
+            // InternalActionDSL.g:10058:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_73);
+            rule__XMultiplicativeExpression__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:10065:1: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XMultiplicativeExpression__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10069:1: ( ( () ) )
+            // InternalActionDSL.g:10070:1: ( () )
+            {
+            // InternalActionDSL.g:10070:1: ( () )
+            // InternalActionDSL.g:10071:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:10072:2: ()
+            // InternalActionDSL.g:10072:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1"
+    // InternalActionDSL.g:10080:1: rule__XMultiplicativeExpression__Group_1_0_0__1 : rule__XMultiplicativeExpression__Group_1_0_0__1__Impl ;
+    public final void rule__XMultiplicativeExpression__Group_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10084:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
+            // InternalActionDSL.g:10085:2: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__Group_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1_0_0__1"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1__Impl"
+    // InternalActionDSL.g:10091:1: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl : ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    public final void rule__XMultiplicativeExpression__Group_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10095:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalActionDSL.g:10096:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalActionDSL.g:10096:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalActionDSL.g:10097:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:10098:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalActionDSL.g:10098:3: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__Group_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XUnaryOperation__Group_0__0"
+    // InternalActionDSL.g:10107:1: rule__XUnaryOperation__Group_0__0 : rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 ;
+    public final void rule__XUnaryOperation__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10111:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
+            // InternalActionDSL.g:10112:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
+            {
+            pushFollow(FOLLOW_75);
+            rule__XUnaryOperation__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XUnaryOperation__Group_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XUnaryOperation__Group_0__0"
+
+
+    // $ANTLR start "rule__XUnaryOperation__Group_0__0__Impl"
+    // InternalActionDSL.g:10119:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
+    public final void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10123:1: ( ( () ) )
+            // InternalActionDSL.g:10124:1: ( () )
+            {
+            // InternalActionDSL.g:10124:1: ( () )
+            // InternalActionDSL.g:10125:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); 
+            }
+            // InternalActionDSL.g:10126:2: ()
+            // InternalActionDSL.g:10126:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XUnaryOperation__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XUnaryOperation__Group_0__1"
+    // InternalActionDSL.g:10134:1: rule__XUnaryOperation__Group_0__1 : rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 ;
+    public final void rule__XUnaryOperation__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10138:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
+            // InternalActionDSL.g:10139:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
+            {
+            pushFollow(FOLLOW_47);
+            rule__XUnaryOperation__Group_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XUnaryOperation__Group_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XUnaryOperation__Group_0__1"
+
+
+    // $ANTLR start "rule__XUnaryOperation__Group_0__1__Impl"
+    // InternalActionDSL.g:10146:1: rule__XUnaryOperation__Group_0__1__Impl : ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) ;
+    public final void rule__XUnaryOperation__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10150:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
+            // InternalActionDSL.g:10151:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            {
+            // InternalActionDSL.g:10151:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalActionDSL.g:10152:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); 
+            }
+            // InternalActionDSL.g:10153:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalActionDSL.g:10153:3: rule__XUnaryOperation__FeatureAssignment_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XUnaryOperation__FeatureAssignment_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XUnaryOperation__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__XUnaryOperation__Group_0__2"
+    // InternalActionDSL.g:10161:1: rule__XUnaryOperation__Group_0__2 : rule__XUnaryOperation__Group_0__2__Impl ;
+    public final void rule__XUnaryOperation__Group_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10165:1: ( rule__XUnaryOperation__Group_0__2__Impl )
+            // InternalActionDSL.g:10166:2: rule__XUnaryOperation__Group_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XUnaryOperation__Group_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XUnaryOperation__Group_0__2"
+
+
+    // $ANTLR start "rule__XUnaryOperation__Group_0__2__Impl"
+    // InternalActionDSL.g:10172:1: rule__XUnaryOperation__Group_0__2__Impl : ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) ;
+    public final void rule__XUnaryOperation__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10176:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
+            // InternalActionDSL.g:10177:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            {
+            // InternalActionDSL.g:10177:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalActionDSL.g:10178:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); 
+            }
+            // InternalActionDSL.g:10179:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalActionDSL.g:10179:3: rule__XUnaryOperation__OperandAssignment_0_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XUnaryOperation__OperandAssignment_0_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XUnaryOperation__Group_0__2__Impl"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group__0"
+    // InternalActionDSL.g:10188:1: rule__XCastedExpression__Group__0 : rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 ;
+    public final void rule__XCastedExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10192:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
+            // InternalActionDSL.g:10193:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
+            {
+            pushFollow(FOLLOW_76);
+            rule__XCastedExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group__0"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group__0__Impl"
+    // InternalActionDSL.g:10200:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
+    public final void rule__XCastedExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10204:1: ( ( ruleXPostfixOperation ) )
+            // InternalActionDSL.g:10205:1: ( ruleXPostfixOperation )
+            {
+            // InternalActionDSL.g:10205:1: ( ruleXPostfixOperation )
+            // InternalActionDSL.g:10206:2: ruleXPostfixOperation
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group__1"
+    // InternalActionDSL.g:10215:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
+    public final void rule__XCastedExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10219:1: ( rule__XCastedExpression__Group__1__Impl )
+            // InternalActionDSL.g:10220:2: rule__XCastedExpression__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group__1"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group__1__Impl"
+    // InternalActionDSL.g:10226:1: rule__XCastedExpression__Group__1__Impl : ( ( rule__XCastedExpression__Group_1__0 )* ) ;
+    public final void rule__XCastedExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10230:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
+            // InternalActionDSL.g:10231:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            {
+            // InternalActionDSL.g:10231:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalActionDSL.g:10232:2: ( rule__XCastedExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:10233:2: ( rule__XCastedExpression__Group_1__0 )*
+            loop89:
+            do {
+                int alt89=2;
+                int LA89_0 = input.LA(1);
+
+                if ( (LA89_0==108) ) {
+                    int LA89_2 = input.LA(2);
+
+                    if ( (synpred155_InternalActionDSL()) ) {
+                        alt89=1;
+                    }
+
+
+                }
+
+
+                switch (alt89) {
+            	case 1 :
+            	    // InternalActionDSL.g:10233:3: rule__XCastedExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_77);
+            	    rule__XCastedExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop89;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1__0"
+    // InternalActionDSL.g:10242:1: rule__XCastedExpression__Group_1__0 : rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 ;
+    public final void rule__XCastedExpression__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10246:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
+            // InternalActionDSL.g:10247:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__XCastedExpression__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1__0"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1__0__Impl"
+    // InternalActionDSL.g:10254:1: rule__XCastedExpression__Group_1__0__Impl : ( ( rule__XCastedExpression__Group_1_0__0 ) ) ;
+    public final void rule__XCastedExpression__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10258:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
+            // InternalActionDSL.g:10259:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            {
+            // InternalActionDSL.g:10259:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalActionDSL.g:10260:2: ( rule__XCastedExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalActionDSL.g:10261:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalActionDSL.g:10261:3: rule__XCastedExpression__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1__1"
+    // InternalActionDSL.g:10269:1: rule__XCastedExpression__Group_1__1 : rule__XCastedExpression__Group_1__1__Impl ;
+    public final void rule__XCastedExpression__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10273:1: ( rule__XCastedExpression__Group_1__1__Impl )
+            // InternalActionDSL.g:10274:2: rule__XCastedExpression__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1__1"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1__1__Impl"
+    // InternalActionDSL.g:10280:1: rule__XCastedExpression__Group_1__1__Impl : ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) ;
+    public final void rule__XCastedExpression__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10284:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
+            // InternalActionDSL.g:10285:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            {
+            // InternalActionDSL.g:10285:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalActionDSL.g:10286:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); 
+            }
+            // InternalActionDSL.g:10287:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalActionDSL.g:10287:3: rule__XCastedExpression__TypeAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__TypeAssignment_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1_0__0"
+    // InternalActionDSL.g:10296:1: rule__XCastedExpression__Group_1_0__0 : rule__XCastedExpression__Group_1_0__0__Impl ;
+    public final void rule__XCastedExpression__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10300:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
+            // InternalActionDSL.g:10301:2: rule__XCastedExpression__Group_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1_0__0__Impl"
+    // InternalActionDSL.g:10307:1: rule__XCastedExpression__Group_1_0__0__Impl : ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) ;
+    public final void rule__XCastedExpression__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10311:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
+            // InternalActionDSL.g:10312:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:10312:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalActionDSL.g:10313:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:10314:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalActionDSL.g:10314:3: rule__XCastedExpression__Group_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0"
+    // InternalActionDSL.g:10323:1: rule__XCastedExpression__Group_1_0_0__0 : rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 ;
+    public final void rule__XCastedExpression__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10327:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
+            // InternalActionDSL.g:10328:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_76);
+            rule__XCastedExpression__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:10335:1: rule__XCastedExpression__Group_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XCastedExpression__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10339:1: ( ( () ) )
+            // InternalActionDSL.g:10340:1: ( () )
+            {
+            // InternalActionDSL.g:10340:1: ( () )
+            // InternalActionDSL.g:10341:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:10342:2: ()
+            // InternalActionDSL.g:10342:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1"
+    // InternalActionDSL.g:10350:1: rule__XCastedExpression__Group_1_0_0__1 : rule__XCastedExpression__Group_1_0_0__1__Impl ;
+    public final void rule__XCastedExpression__Group_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10354:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
+            // InternalActionDSL.g:10355:2: rule__XCastedExpression__Group_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCastedExpression__Group_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1_0_0__1"
+
+
+    // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1__Impl"
+    // InternalActionDSL.g:10361:1: rule__XCastedExpression__Group_1_0_0__1__Impl : ( 'as' ) ;
+    public final void rule__XCastedExpression__Group_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10365:1: ( ( 'as' ) )
+            // InternalActionDSL.g:10366:1: ( 'as' )
+            {
+            // InternalActionDSL.g:10366:1: ( 'as' )
+            // InternalActionDSL.g:10367:2: 'as'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
+            }
+            match(input,108,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__Group_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group__0"
+    // InternalActionDSL.g:10377:1: rule__XPostfixOperation__Group__0 : rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 ;
+    public final void rule__XPostfixOperation__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10381:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
+            // InternalActionDSL.g:10382:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
+            {
+            pushFollow(FOLLOW_78);
+            rule__XPostfixOperation__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XPostfixOperation__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group__0"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group__0__Impl"
+    // InternalActionDSL.g:10389:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
+    public final void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10393:1: ( ( ruleXMemberFeatureCall ) )
+            // InternalActionDSL.g:10394:1: ( ruleXMemberFeatureCall )
+            {
+            // InternalActionDSL.g:10394:1: ( ruleXMemberFeatureCall )
+            // InternalActionDSL.g:10395:2: ruleXMemberFeatureCall
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group__1"
+    // InternalActionDSL.g:10404:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
+    public final void rule__XPostfixOperation__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10408:1: ( rule__XPostfixOperation__Group__1__Impl )
+            // InternalActionDSL.g:10409:2: rule__XPostfixOperation__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XPostfixOperation__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group__1"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group__1__Impl"
+    // InternalActionDSL.g:10415:1: rule__XPostfixOperation__Group__1__Impl : ( ( rule__XPostfixOperation__Group_1__0 )? ) ;
+    public final void rule__XPostfixOperation__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10419:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
+            // InternalActionDSL.g:10420:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            {
+            // InternalActionDSL.g:10420:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalActionDSL.g:10421:2: ( rule__XPostfixOperation__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:10422:2: ( rule__XPostfixOperation__Group_1__0 )?
+            int alt90=2;
+            int LA90_0 = input.LA(1);
+
+            if ( (LA90_0==43) ) {
+                int LA90_1 = input.LA(2);
+
+                if ( (synpred156_InternalActionDSL()) ) {
+                    alt90=1;
+                }
+            }
+            else if ( (LA90_0==44) ) {
+                int LA90_2 = input.LA(2);
+
+                if ( (synpred156_InternalActionDSL()) ) {
+                    alt90=1;
+                }
+            }
+            switch (alt90) {
+                case 1 :
+                    // InternalActionDSL.g:10422:3: rule__XPostfixOperation__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XPostfixOperation__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group_1__0"
+    // InternalActionDSL.g:10431:1: rule__XPostfixOperation__Group_1__0 : rule__XPostfixOperation__Group_1__0__Impl ;
+    public final void rule__XPostfixOperation__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10435:1: ( rule__XPostfixOperation__Group_1__0__Impl )
+            // InternalActionDSL.g:10436:2: rule__XPostfixOperation__Group_1__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XPostfixOperation__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group_1__0"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group_1__0__Impl"
+    // InternalActionDSL.g:10442:1: rule__XPostfixOperation__Group_1__0__Impl : ( ( rule__XPostfixOperation__Group_1_0__0 ) ) ;
+    public final void rule__XPostfixOperation__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10446:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
+            // InternalActionDSL.g:10447:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            {
+            // InternalActionDSL.g:10447:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalActionDSL.g:10448:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); 
+            }
+            // InternalActionDSL.g:10449:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalActionDSL.g:10449:3: rule__XPostfixOperation__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XPostfixOperation__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group_1_0__0"
+    // InternalActionDSL.g:10458:1: rule__XPostfixOperation__Group_1_0__0 : rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 ;
+    public final void rule__XPostfixOperation__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10462:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
+            // InternalActionDSL.g:10463:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
+            {
+            pushFollow(FOLLOW_78);
+            rule__XPostfixOperation__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XPostfixOperation__Group_1_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group_1_0__0__Impl"
+    // InternalActionDSL.g:10470:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
+    public final void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10474:1: ( ( () ) )
+            // InternalActionDSL.g:10475:1: ( () )
+            {
+            // InternalActionDSL.g:10475:1: ( () )
+            // InternalActionDSL.g:10476:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); 
+            }
+            // InternalActionDSL.g:10477:2: ()
+            // InternalActionDSL.g:10477:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group_1_0__1"
+    // InternalActionDSL.g:10485:1: rule__XPostfixOperation__Group_1_0__1 : rule__XPostfixOperation__Group_1_0__1__Impl ;
+    public final void rule__XPostfixOperation__Group_1_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10489:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
+            // InternalActionDSL.g:10490:2: rule__XPostfixOperation__Group_1_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XPostfixOperation__Group_1_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group_1_0__1"
+
+
+    // $ANTLR start "rule__XPostfixOperation__Group_1_0__1__Impl"
+    // InternalActionDSL.g:10496:1: rule__XPostfixOperation__Group_1_0__1__Impl : ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) ;
+    public final void rule__XPostfixOperation__Group_1_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10500:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
+            // InternalActionDSL.g:10501:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            {
+            // InternalActionDSL.g:10501:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalActionDSL.g:10502:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); 
+            }
+            // InternalActionDSL.g:10503:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalActionDSL.g:10503:3: rule__XPostfixOperation__FeatureAssignment_1_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XPostfixOperation__FeatureAssignment_1_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__Group_1_0__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group__0"
+    // InternalActionDSL.g:10512:1: rule__XMemberFeatureCall__Group__0 : rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 ;
+    public final void rule__XMemberFeatureCall__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10516:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
+            // InternalActionDSL.g:10517:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
+            {
+            pushFollow(FOLLOW_79);
+            rule__XMemberFeatureCall__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group__0__Impl"
+    // InternalActionDSL.g:10524:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
+    public final void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10528:1: ( ( ruleXPrimaryExpression ) )
+            // InternalActionDSL.g:10529:1: ( ruleXPrimaryExpression )
+            {
+            // InternalActionDSL.g:10529:1: ( ruleXPrimaryExpression )
+            // InternalActionDSL.g:10530:2: ruleXPrimaryExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXPrimaryExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group__1"
+    // InternalActionDSL.g:10539:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
+    public final void rule__XMemberFeatureCall__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10543:1: ( rule__XMemberFeatureCall__Group__1__Impl )
+            // InternalActionDSL.g:10544:2: rule__XMemberFeatureCall__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group__1__Impl"
+    // InternalActionDSL.g:10550:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
+    public final void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10554:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
+            // InternalActionDSL.g:10555:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            {
+            // InternalActionDSL.g:10555:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalActionDSL.g:10556:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); 
+            }
+            // InternalActionDSL.g:10557:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            loop91:
+            do {
+                int alt91=2;
+                switch ( input.LA(1) ) {
+                case 45:
+                    {
+                    int LA91_2 = input.LA(2);
+
+                    if ( (synpred157_InternalActionDSL()) ) {
+                        alt91=1;
+                    }
+
+
+                    }
+                    break;
+                case 136:
+                    {
+                    int LA91_3 = input.LA(2);
+
+                    if ( (synpred157_InternalActionDSL()) ) {
+                        alt91=1;
+                    }
+
+
+                    }
+                    break;
+                case 137:
+                    {
+                    int LA91_4 = input.LA(2);
+
+                    if ( (synpred157_InternalActionDSL()) ) {
+                        alt91=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt91) {
+            	case 1 :
+            	    // InternalActionDSL.g:10557:3: rule__XMemberFeatureCall__Alternatives_1
+            	    {
+            	    pushFollow(FOLLOW_80);
+            	    rule__XMemberFeatureCall__Alternatives_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop91;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0"
+    // InternalActionDSL.g:10566:1: rule__XMemberFeatureCall__Group_1_0__0 : rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 ;
+    public final void rule__XMemberFeatureCall__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10570:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
+            // InternalActionDSL.g:10571:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XMemberFeatureCall__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0__Impl"
+    // InternalActionDSL.g:10578:1: rule__XMemberFeatureCall__Group_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10582:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
+            // InternalActionDSL.g:10583:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:10583:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalActionDSL.g:10584:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:10585:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalActionDSL.g:10585:3: rule__XMemberFeatureCall__Group_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1"
+    // InternalActionDSL.g:10593:1: rule__XMemberFeatureCall__Group_1_0__1 : rule__XMemberFeatureCall__Group_1_0__1__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10597:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
+            // InternalActionDSL.g:10598:2: rule__XMemberFeatureCall__Group_1_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1__Impl"
+    // InternalActionDSL.g:10604:1: rule__XMemberFeatureCall__Group_1_0__1__Impl : ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10608:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
+            // InternalActionDSL.g:10609:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            {
+            // InternalActionDSL.g:10609:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalActionDSL.g:10610:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); 
+            }
+            // InternalActionDSL.g:10611:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalActionDSL.g:10611:3: rule__XMemberFeatureCall__ValueAssignment_1_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__ValueAssignment_1_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0"
+    // InternalActionDSL.g:10620:1: rule__XMemberFeatureCall__Group_1_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0__0__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10624:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
+            // InternalActionDSL.g:10625:2: rule__XMemberFeatureCall__Group_1_0_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:10631:1: rule__XMemberFeatureCall__Group_1_0_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10635:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
+            // InternalActionDSL.g:10636:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            {
+            // InternalActionDSL.g:10636:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalActionDSL.g:10637:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:10638:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalActionDSL.g:10638:3: rule__XMemberFeatureCall__Group_1_0_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_0_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0"
+    // InternalActionDSL.g:10647:1: rule__XMemberFeatureCall__Group_1_0_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10651:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
+            // InternalActionDSL.g:10652:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
+            {
+            pushFollow(FOLLOW_81);
+            rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_0_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0_0__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl"
+    // InternalActionDSL.g:10659:1: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl : ( () ) ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10663:1: ( ( () ) )
+            // InternalActionDSL.g:10664:1: ( () )
+            {
+            // InternalActionDSL.g:10664:1: ( () )
+            // InternalActionDSL.g:10665:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); 
+            }
+            // InternalActionDSL.g:10666:2: ()
+            // InternalActionDSL.g:10666:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1"
+    // InternalActionDSL.g:10674:1: rule__XMemberFeatureCall__Group_1_0_0_0__1 : rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10678:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
+            // InternalActionDSL.g:10679:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
+            {
+            pushFollow(FOLLOW_52);
+            rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_0_0_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0_0__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl"
+    // InternalActionDSL.g:10686:1: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10690:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
+            // InternalActionDSL.g:10691:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            {
+            // InternalActionDSL.g:10691:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalActionDSL.g:10692:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); 
+            }
+            // InternalActionDSL.g:10693:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalActionDSL.g:10693:3: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Alternatives_1_0_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2"
+    // InternalActionDSL.g:10701:1: rule__XMemberFeatureCall__Group_1_0_0_0__2 : rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10705:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
+            // InternalActionDSL.g:10706:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
+            {
+            pushFollow(FOLLOW_48);
+            rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_0_0_0__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0_0__2"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl"
+    // InternalActionDSL.g:10713:1: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10717:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
+            // InternalActionDSL.g:10718:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            {
+            // InternalActionDSL.g:10718:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalActionDSL.g:10719:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); 
+            }
+            // InternalActionDSL.g:10720:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalActionDSL.g:10720:3: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3"
+    // InternalActionDSL.g:10728:1: rule__XMemberFeatureCall__Group_1_0_0_0__3 : rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0_0__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10732:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
+            // InternalActionDSL.g:10733:2: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0_0__3"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl"
+    // InternalActionDSL.g:10739:1: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl : ( ruleOpSingleAssign ) ;
+    public final void rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10743:1: ( ( ruleOpSingleAssign ) )
+            // InternalActionDSL.g:10744:1: ( ruleOpSingleAssign )
+            {
+            // InternalActionDSL.g:10744:1: ( ruleOpSingleAssign )
+            // InternalActionDSL.g:10745:2: ruleOpSingleAssign
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0"
+    // InternalActionDSL.g:10755:1: rule__XMemberFeatureCall__Group_1_1__0 : rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 ;
+    public final void rule__XMemberFeatureCall__Group_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10759:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
+            // InternalActionDSL.g:10760:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
+            {
+            pushFollow(FOLLOW_82);
+            rule__XMemberFeatureCall__Group_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0__Impl"
+    // InternalActionDSL.g:10767:1: rule__XMemberFeatureCall__Group_1_1__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10771:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
+            // InternalActionDSL.g:10772:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            {
+            // InternalActionDSL.g:10772:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalActionDSL.g:10773:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); 
+            }
+            // InternalActionDSL.g:10774:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalActionDSL.g:10774:3: rule__XMemberFeatureCall__Group_1_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1"
+    // InternalActionDSL.g:10782:1: rule__XMemberFeatureCall__Group_1_1__1 : rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 ;
+    public final void rule__XMemberFeatureCall__Group_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10786:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
+            // InternalActionDSL.g:10787:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
+            {
+            pushFollow(FOLLOW_82);
+            rule__XMemberFeatureCall__Group_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1__Impl"
+    // InternalActionDSL.g:10794:1: rule__XMemberFeatureCall__Group_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10798:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
+            // InternalActionDSL.g:10799:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            {
+            // InternalActionDSL.g:10799:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalActionDSL.g:10800:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); 
+            }
+            // InternalActionDSL.g:10801:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            int alt92=2;
+            int LA92_0 = input.LA(1);
+
+            if ( (LA92_0==29) ) {
+                alt92=1;
+            }
+            switch (alt92) {
+                case 1 :
+                    // InternalActionDSL.g:10801:3: rule__XMemberFeatureCall__Group_1_1_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__Group_1_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2"
+    // InternalActionDSL.g:10809:1: rule__XMemberFeatureCall__Group_1_1__2 : rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 ;
+    public final void rule__XMemberFeatureCall__Group_1_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10813:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
+            // InternalActionDSL.g:10814:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
+            {
+            pushFollow(FOLLOW_83);
+            rule__XMemberFeatureCall__Group_1_1__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__2"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2__Impl"
+    // InternalActionDSL.g:10821:1: rule__XMemberFeatureCall__Group_1_1__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10825:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
+            // InternalActionDSL.g:10826:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            {
+            // InternalActionDSL.g:10826:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalActionDSL.g:10827:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); 
+            }
+            // InternalActionDSL.g:10828:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalActionDSL.g:10828:3: rule__XMemberFeatureCall__FeatureAssignment_1_1_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__FeatureAssignment_1_1_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__2__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3"
+    // InternalActionDSL.g:10836:1: rule__XMemberFeatureCall__Group_1_1__3 : rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 ;
+    public final void rule__XMemberFeatureCall__Group_1_1__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10840:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
+            // InternalActionDSL.g:10841:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
+            {
+            pushFollow(FOLLOW_83);
+            rule__XMemberFeatureCall__Group_1_1__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__3"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3__Impl"
+    // InternalActionDSL.g:10848:1: rule__XMemberFeatureCall__Group_1_1__3__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10852:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
+            // InternalActionDSL.g:10853:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            {
+            // InternalActionDSL.g:10853:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalActionDSL.g:10854:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); 
+            }
+            // InternalActionDSL.g:10855:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            int alt93=2;
+            alt93 = dfa93.predict(input);
+            switch (alt93) {
+                case 1 :
+                    // InternalActionDSL.g:10855:3: rule__XMemberFeatureCall__Group_1_1_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__Group_1_1_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__3__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4"
+    // InternalActionDSL.g:10863:1: rule__XMemberFeatureCall__Group_1_1__4 : rule__XMemberFeatureCall__Group_1_1__4__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_1__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10867:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
+            // InternalActionDSL.g:10868:2: rule__XMemberFeatureCall__Group_1_1__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__4"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4__Impl"
+    // InternalActionDSL.g:10874:1: rule__XMemberFeatureCall__Group_1_1__4__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10878:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
+            // InternalActionDSL.g:10879:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            {
+            // InternalActionDSL.g:10879:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalActionDSL.g:10880:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); 
+            }
+            // InternalActionDSL.g:10881:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            int alt94=2;
+            alt94 = dfa94.predict(input);
+            switch (alt94) {
+                case 1 :
+                    // InternalActionDSL.g:10881:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1__4__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0"
+    // InternalActionDSL.g:10890:1: rule__XMemberFeatureCall__Group_1_1_0__0 : rule__XMemberFeatureCall__Group_1_1_0__0__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10894:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
+            // InternalActionDSL.g:10895:2: rule__XMemberFeatureCall__Group_1_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_0__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0__Impl"
+    // InternalActionDSL.g:10901:1: rule__XMemberFeatureCall__Group_1_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10905:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
+            // InternalActionDSL.g:10906:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:10906:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalActionDSL.g:10907:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalActionDSL.g:10908:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalActionDSL.g:10908:3: rule__XMemberFeatureCall__Group_1_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0"
+    // InternalActionDSL.g:10917:1: rule__XMemberFeatureCall__Group_1_1_0_0__0 : rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 ;
+    public final void rule__XMemberFeatureCall__Group_1_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10921:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
+            // InternalActionDSL.g:10922:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_79);
+            rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_0_0__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl"
+    // InternalActionDSL.g:10929:1: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl : ( () ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10933:1: ( ( () ) )
+            // InternalActionDSL.g:10934:1: ( () )
+            {
+            // InternalActionDSL.g:10934:1: ( () )
+            // InternalActionDSL.g:10935:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:10936:2: ()
+            // InternalActionDSL.g:10936:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1"
+    // InternalActionDSL.g:10944:1: rule__XMemberFeatureCall__Group_1_1_0_0__1 : rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10948:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
+            // InternalActionDSL.g:10949:2: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_0_0__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl"
+    // InternalActionDSL.g:10955:1: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10959:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
+            // InternalActionDSL.g:10960:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            {
+            // InternalActionDSL.g:10960:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalActionDSL.g:10961:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:10962:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalActionDSL.g:10962:3: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Alternatives_1_1_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0"
+    // InternalActionDSL.g:10971:1: rule__XMemberFeatureCall__Group_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10975:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
+            // InternalActionDSL.g:10976:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__XMemberFeatureCall__Group_1_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0__Impl"
+    // InternalActionDSL.g:10983:1: rule__XMemberFeatureCall__Group_1_1_1__0__Impl : ( '<' ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:10987:1: ( ( '<' ) )
+            // InternalActionDSL.g:10988:1: ( '<' )
+            {
+            // InternalActionDSL.g:10988:1: ( '<' )
+            // InternalActionDSL.g:10989:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0()); 
+            }
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1"
+    // InternalActionDSL.g:10998:1: rule__XMemberFeatureCall__Group_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11002:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
+            // InternalActionDSL.g:11003:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
+            {
+            pushFollow(FOLLOW_85);
+            rule__XMemberFeatureCall__Group_1_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_1__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1__Impl"
+    // InternalActionDSL.g:11010:1: rule__XMemberFeatureCall__Group_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11014:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
+            // InternalActionDSL.g:11015:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            {
+            // InternalActionDSL.g:11015:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalActionDSL.g:11016:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); 
+            }
+            // InternalActionDSL.g:11017:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalActionDSL.g:11017:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2"
+    // InternalActionDSL.g:11025:1: rule__XMemberFeatureCall__Group_1_1_1__2 : rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11029:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
+            // InternalActionDSL.g:11030:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
+            {
+            pushFollow(FOLLOW_85);
+            rule__XMemberFeatureCall__Group_1_1_1__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_1__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1__2"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2__Impl"
+    // InternalActionDSL.g:11037:1: rule__XMemberFeatureCall__Group_1_1_1__2__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11041:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
+            // InternalActionDSL.g:11042:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            {
+            // InternalActionDSL.g:11042:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalActionDSL.g:11043:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); 
+            }
+            // InternalActionDSL.g:11044:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            loop95:
+            do {
+                int alt95=2;
+                int LA95_0 = input.LA(1);
+
+                if ( (LA95_0==103) ) {
+                    alt95=1;
+                }
+
+
+                switch (alt95) {
+            	case 1 :
+            	    // InternalActionDSL.g:11044:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XMemberFeatureCall__Group_1_1_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop95;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1__2__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3"
+    // InternalActionDSL.g:11052:1: rule__XMemberFeatureCall__Group_1_1_1__3 : rule__XMemberFeatureCall__Group_1_1_1__3__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11056:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
+            // InternalActionDSL.g:11057:2: rule__XMemberFeatureCall__Group_1_1_1__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_1__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1__3"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3__Impl"
+    // InternalActionDSL.g:11063:1: rule__XMemberFeatureCall__Group_1_1_1__3__Impl : ( '>' ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11067:1: ( ( '>' ) )
+            // InternalActionDSL.g:11068:1: ( '>' )
+            {
+            // InternalActionDSL.g:11068:1: ( '>' )
+            // InternalActionDSL.g:11069:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1__3__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0"
+    // InternalActionDSL.g:11079:1: rule__XMemberFeatureCall__Group_1_1_1_2__0 : rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11083:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
+            // InternalActionDSL.g:11084:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_1_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1_2__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl"
+    // InternalActionDSL.g:11091:1: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl : ( ',' ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11095:1: ( ( ',' ) )
+            // InternalActionDSL.g:11096:1: ( ',' )
+            {
+            // InternalActionDSL.g:11096:1: ( ',' )
+            // InternalActionDSL.g:11097:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1"
+    // InternalActionDSL.g:11106:1: rule__XMemberFeatureCall__Group_1_1_1_2__1 : rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11110:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
+            // InternalActionDSL.g:11111:2: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1_2__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl"
+    // InternalActionDSL.g:11117:1: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11121:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
+            // InternalActionDSL.g:11122:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            {
+            // InternalActionDSL.g:11122:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalActionDSL.g:11123:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); 
+            }
+            // InternalActionDSL.g:11124:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalActionDSL.g:11124:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0"
+    // InternalActionDSL.g:11133:1: rule__XMemberFeatureCall__Group_1_1_3__0 : rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11137:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
+            // InternalActionDSL.g:11138:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
+            {
+            pushFollow(FOLLOW_86);
+            rule__XMemberFeatureCall__Group_1_1_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0__Impl"
+    // InternalActionDSL.g:11145:1: rule__XMemberFeatureCall__Group_1_1_3__0__Impl : ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11149:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
+            // InternalActionDSL.g:11150:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            {
+            // InternalActionDSL.g:11150:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalActionDSL.g:11151:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); 
+            }
+            // InternalActionDSL.g:11152:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalActionDSL.g:11152:3: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1"
+    // InternalActionDSL.g:11160:1: rule__XMemberFeatureCall__Group_1_1_3__1 : rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11164:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
+            // InternalActionDSL.g:11165:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
+            {
+            pushFollow(FOLLOW_86);
+            rule__XMemberFeatureCall__Group_1_1_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_3__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1__Impl"
+    // InternalActionDSL.g:11172:1: rule__XMemberFeatureCall__Group_1_1_3__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11176:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
+            // InternalActionDSL.g:11177:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            {
+            // InternalActionDSL.g:11177:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalActionDSL.g:11178:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); 
+            }
+            // InternalActionDSL.g:11179:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            int alt96=2;
+            int LA96_0 = input.LA(1);
+
+            if ( ((LA96_0>=RULE_ID && LA96_0<=RULE_DECIMAL)||LA96_0==29||LA96_0==33||(LA96_0>=36 && LA96_0<=37)||LA96_0==42||(LA96_0>=47 && LA96_0<=52)||LA96_0==79||LA96_0==101||(LA96_0>=105 && LA96_0<=106)||LA96_0==109||LA96_0==111||(LA96_0>=115 && LA96_0<=123)||LA96_0==125||LA96_0==138||LA96_0==140) ) {
+                alt96=1;
+            }
+            switch (alt96) {
+                case 1 :
+                    // InternalActionDSL.g:11179:3: rule__XMemberFeatureCall__Alternatives_1_1_3_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XMemberFeatureCall__Alternatives_1_1_3_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2"
+    // InternalActionDSL.g:11187:1: rule__XMemberFeatureCall__Group_1_1_3__2 : rule__XMemberFeatureCall__Group_1_1_3__2__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11191:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
+            // InternalActionDSL.g:11192:2: rule__XMemberFeatureCall__Group_1_1_3__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_3__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3__2"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2__Impl"
+    // InternalActionDSL.g:11198:1: rule__XMemberFeatureCall__Group_1_1_3__2__Impl : ( ')' ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11202:1: ( ( ')' ) )
+            // InternalActionDSL.g:11203:1: ( ')' )
+            {
+            // InternalActionDSL.g:11203:1: ( ')' )
+            // InternalActionDSL.g:11204:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3__2__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0"
+    // InternalActionDSL.g:11214:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11218:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
+            // InternalActionDSL.g:11219:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_3_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3_1_1__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl"
+    // InternalActionDSL.g:11226:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11230:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
+            // InternalActionDSL.g:11231:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            {
+            // InternalActionDSL.g:11231:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalActionDSL.g:11232:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); 
+            }
+            // InternalActionDSL.g:11233:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalActionDSL.g:11233:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1"
+    // InternalActionDSL.g:11241:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11245:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
+            // InternalActionDSL.g:11246:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3_1_1__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl"
+    // InternalActionDSL.g:11252:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11256:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
+            // InternalActionDSL.g:11257:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            {
+            // InternalActionDSL.g:11257:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalActionDSL.g:11258:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1()); 
+            }
+            // InternalActionDSL.g:11259:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            loop97:
+            do {
+                int alt97=2;
+                int LA97_0 = input.LA(1);
+
+                if ( (LA97_0==103) ) {
+                    alt97=1;
+                }
+
+
+                switch (alt97) {
+            	case 1 :
+            	    // InternalActionDSL.g:11259:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop97;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0"
+    // InternalActionDSL.g:11268:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11272:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
+            // InternalActionDSL.g:11273:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl"
+    // InternalActionDSL.g:11280:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl : ( ',' ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11284:1: ( ( ',' ) )
+            // InternalActionDSL.g:11285:1: ( ',' )
+            {
+            // InternalActionDSL.g:11285:1: ( ',' )
+            // InternalActionDSL.g:11286:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1"
+    // InternalActionDSL.g:11295:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11299:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
+            // InternalActionDSL.g:11300:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl"
+    // InternalActionDSL.g:11306:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) ;
+    public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11310:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
+            // InternalActionDSL.g:11311:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            {
+            // InternalActionDSL.g:11311:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalActionDSL.g:11312:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1()); 
+            }
+            // InternalActionDSL.g:11313:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalActionDSL.g:11313:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__0"
+    // InternalActionDSL.g:11322:1: rule__XSetLiteral__Group__0 : rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 ;
+    public final void rule__XSetLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11326:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
+            // InternalActionDSL.g:11327:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
+            {
+            pushFollow(FOLLOW_50);
+            rule__XSetLiteral__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__0"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__0__Impl"
+    // InternalActionDSL.g:11334:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XSetLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11338:1: ( ( () ) )
+            // InternalActionDSL.g:11339:1: ( () )
+            {
+            // InternalActionDSL.g:11339:1: ( () )
+            // InternalActionDSL.g:11340:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); 
+            }
+            // InternalActionDSL.g:11341:2: ()
+            // InternalActionDSL.g:11341:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__1"
+    // InternalActionDSL.g:11349:1: rule__XSetLiteral__Group__1 : rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 ;
+    public final void rule__XSetLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11353:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
+            // InternalActionDSL.g:11354:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
+            {
+            pushFollow(FOLLOW_8);
+            rule__XSetLiteral__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__1"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__1__Impl"
+    // InternalActionDSL.g:11361:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
+    public final void rule__XSetLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11365:1: ( ( '#' ) )
+            // InternalActionDSL.g:11366:1: ( '#' )
+            {
+            // InternalActionDSL.g:11366:1: ( '#' )
+            // InternalActionDSL.g:11367:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
+            }
+            match(input,105,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__2"
+    // InternalActionDSL.g:11376:1: rule__XSetLiteral__Group__2 : rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 ;
+    public final void rule__XSetLiteral__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11380:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
+            // InternalActionDSL.g:11381:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
+            {
+            pushFollow(FOLLOW_87);
+            rule__XSetLiteral__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__2"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__2__Impl"
+    // InternalActionDSL.g:11388:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
+    public final void rule__XSetLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11392:1: ( ( '{' ) )
+            // InternalActionDSL.g:11393:1: ( '{' )
+            {
+            // InternalActionDSL.g:11393:1: ( '{' )
+            // InternalActionDSL.g:11394:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+            match(input,79,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__3"
+    // InternalActionDSL.g:11403:1: rule__XSetLiteral__Group__3 : rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 ;
+    public final void rule__XSetLiteral__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11407:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
+            // InternalActionDSL.g:11408:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
+            {
+            pushFollow(FOLLOW_87);
+            rule__XSetLiteral__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__3"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__3__Impl"
+    // InternalActionDSL.g:11415:1: rule__XSetLiteral__Group__3__Impl : ( ( rule__XSetLiteral__Group_3__0 )? ) ;
+    public final void rule__XSetLiteral__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11419:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
+            // InternalActionDSL.g:11420:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:11420:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalActionDSL.g:11421:2: ( rule__XSetLiteral__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:11422:2: ( rule__XSetLiteral__Group_3__0 )?
+            int alt98=2;
+            int LA98_0 = input.LA(1);
+
+            if ( ((LA98_0>=RULE_ID && LA98_0<=RULE_DECIMAL)||LA98_0==29||(LA98_0>=36 && LA98_0<=37)||LA98_0==42||(LA98_0>=47 && LA98_0<=52)||LA98_0==79||LA98_0==101||(LA98_0>=105 && LA98_0<=106)||LA98_0==109||LA98_0==111||(LA98_0>=115 && LA98_0<=123)||LA98_0==125||LA98_0==140) ) {
+                alt98=1;
+            }
+            switch (alt98) {
+                case 1 :
+                    // InternalActionDSL.g:11422:3: rule__XSetLiteral__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XSetLiteral__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__4"
+    // InternalActionDSL.g:11430:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
+    public final void rule__XSetLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11434:1: ( rule__XSetLiteral__Group__4__Impl )
+            // InternalActionDSL.g:11435:2: rule__XSetLiteral__Group__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__4"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__4__Impl"
+    // InternalActionDSL.g:11441:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
+    public final void rule__XSetLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11445:1: ( ( '}' ) )
+            // InternalActionDSL.g:11446:1: ( '}' )
+            {
+            // InternalActionDSL.g:11446:1: ( '}' )
+            // InternalActionDSL.g:11447:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
+            }
+            match(input,80,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group_3__0"
+    // InternalActionDSL.g:11457:1: rule__XSetLiteral__Group_3__0 : rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 ;
+    public final void rule__XSetLiteral__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11461:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
+            // InternalActionDSL.g:11462:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XSetLiteral__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group_3__0"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group_3__0__Impl"
+    // InternalActionDSL.g:11469:1: rule__XSetLiteral__Group_3__0__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) ;
+    public final void rule__XSetLiteral__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11473:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalActionDSL.g:11474:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            {
+            // InternalActionDSL.g:11474:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalActionDSL.g:11475:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); 
+            }
+            // InternalActionDSL.g:11476:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalActionDSL.g:11476:3: rule__XSetLiteral__ElementsAssignment_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__ElementsAssignment_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group_3__1"
+    // InternalActionDSL.g:11484:1: rule__XSetLiteral__Group_3__1 : rule__XSetLiteral__Group_3__1__Impl ;
+    public final void rule__XSetLiteral__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11488:1: ( rule__XSetLiteral__Group_3__1__Impl )
+            // InternalActionDSL.g:11489:2: rule__XSetLiteral__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group_3__1"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group_3__1__Impl"
+    // InternalActionDSL.g:11495:1: rule__XSetLiteral__Group_3__1__Impl : ( ( rule__XSetLiteral__Group_3_1__0 )* ) ;
+    public final void rule__XSetLiteral__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11499:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
+            // InternalActionDSL.g:11500:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            {
+            // InternalActionDSL.g:11500:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalActionDSL.g:11501:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); 
+            }
+            // InternalActionDSL.g:11502:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            loop99:
+            do {
+                int alt99=2;
+                int LA99_0 = input.LA(1);
+
+                if ( (LA99_0==103) ) {
+                    alt99=1;
+                }
+
+
+                switch (alt99) {
+            	case 1 :
+            	    // InternalActionDSL.g:11502:3: rule__XSetLiteral__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XSetLiteral__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop99;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group_3_1__0"
+    // InternalActionDSL.g:11511:1: rule__XSetLiteral__Group_3_1__0 : rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 ;
+    public final void rule__XSetLiteral__Group_3_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11515:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
+            // InternalActionDSL.g:11516:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XSetLiteral__Group_3_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group_3_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group_3_1__0"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group_3_1__0__Impl"
+    // InternalActionDSL.g:11523:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11527:1: ( ( ',' ) )
+            // InternalActionDSL.g:11528:1: ( ',' )
+            {
+            // InternalActionDSL.g:11528:1: ( ',' )
+            // InternalActionDSL.g:11529:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group_3_1__0__Impl"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group_3_1__1"
+    // InternalActionDSL.g:11538:1: rule__XSetLiteral__Group_3_1__1 : rule__XSetLiteral__Group_3_1__1__Impl ;
+    public final void rule__XSetLiteral__Group_3_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11542:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
+            // InternalActionDSL.g:11543:2: rule__XSetLiteral__Group_3_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group_3_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group_3_1__1"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group_3_1__1__Impl"
+    // InternalActionDSL.g:11549:1: rule__XSetLiteral__Group_3_1__1__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) ;
+    public final void rule__XSetLiteral__Group_3_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11553:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalActionDSL.g:11554:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            {
+            // InternalActionDSL.g:11554:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalActionDSL.g:11555:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+            // InternalActionDSL.g:11556:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalActionDSL.g:11556:3: rule__XSetLiteral__ElementsAssignment_3_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__ElementsAssignment_3_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group_3_1__1__Impl"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__0"
+    // InternalActionDSL.g:11565:1: rule__XListLiteral__Group__0 : rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 ;
+    public final void rule__XListLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11569:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
+            // InternalActionDSL.g:11570:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
+            {
+            pushFollow(FOLLOW_50);
+            rule__XListLiteral__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__0"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__0__Impl"
+    // InternalActionDSL.g:11577:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XListLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11581:1: ( ( () ) )
+            // InternalActionDSL.g:11582:1: ( () )
+            {
+            // InternalActionDSL.g:11582:1: ( () )
+            // InternalActionDSL.g:11583:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); 
+            }
+            // InternalActionDSL.g:11584:2: ()
+            // InternalActionDSL.g:11584:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__1"
+    // InternalActionDSL.g:11592:1: rule__XListLiteral__Group__1 : rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 ;
+    public final void rule__XListLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11596:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
+            // InternalActionDSL.g:11597:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
+            {
+            pushFollow(FOLLOW_51);
+            rule__XListLiteral__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__1"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__1__Impl"
+    // InternalActionDSL.g:11604:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
+    public final void rule__XListLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11608:1: ( ( '#' ) )
+            // InternalActionDSL.g:11609:1: ( '#' )
+            {
+            // InternalActionDSL.g:11609:1: ( '#' )
+            // InternalActionDSL.g:11610:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
+            }
+            match(input,105,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__2"
+    // InternalActionDSL.g:11619:1: rule__XListLiteral__Group__2 : rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 ;
+    public final void rule__XListLiteral__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11623:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
+            // InternalActionDSL.g:11624:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
+            {
+            pushFollow(FOLLOW_49);
+            rule__XListLiteral__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__2"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__2__Impl"
+    // InternalActionDSL.g:11631:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
+    public final void rule__XListLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11635:1: ( ( '[' ) )
+            // InternalActionDSL.g:11636:1: ( '[' )
+            {
+            // InternalActionDSL.g:11636:1: ( '[' )
+            // InternalActionDSL.g:11637:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
+            }
+            match(input,106,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__3"
+    // InternalActionDSL.g:11646:1: rule__XListLiteral__Group__3 : rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 ;
+    public final void rule__XListLiteral__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11650:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
+            // InternalActionDSL.g:11651:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
+            {
+            pushFollow(FOLLOW_49);
+            rule__XListLiteral__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__3"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__3__Impl"
+    // InternalActionDSL.g:11658:1: rule__XListLiteral__Group__3__Impl : ( ( rule__XListLiteral__Group_3__0 )? ) ;
+    public final void rule__XListLiteral__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11662:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
+            // InternalActionDSL.g:11663:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:11663:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalActionDSL.g:11664:2: ( rule__XListLiteral__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:11665:2: ( rule__XListLiteral__Group_3__0 )?
+            int alt100=2;
+            int LA100_0 = input.LA(1);
+
+            if ( ((LA100_0>=RULE_ID && LA100_0<=RULE_DECIMAL)||LA100_0==29||(LA100_0>=36 && LA100_0<=37)||LA100_0==42||(LA100_0>=47 && LA100_0<=52)||LA100_0==79||LA100_0==101||(LA100_0>=105 && LA100_0<=106)||LA100_0==109||LA100_0==111||(LA100_0>=115 && LA100_0<=123)||LA100_0==125||LA100_0==140) ) {
+                alt100=1;
+            }
+            switch (alt100) {
+                case 1 :
+                    // InternalActionDSL.g:11665:3: rule__XListLiteral__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XListLiteral__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__4"
+    // InternalActionDSL.g:11673:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
+    public final void rule__XListLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11677:1: ( rule__XListLiteral__Group__4__Impl )
+            // InternalActionDSL.g:11678:2: rule__XListLiteral__Group__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__4"
+
+
+    // $ANTLR start "rule__XListLiteral__Group__4__Impl"
+    // InternalActionDSL.g:11684:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
+    public final void rule__XListLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11688:1: ( ( ']' ) )
+            // InternalActionDSL.g:11689:1: ( ']' )
+            {
+            // InternalActionDSL.g:11689:1: ( ']' )
+            // InternalActionDSL.g:11690:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
+            }
+            match(input,104,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XListLiteral__Group_3__0"
+    // InternalActionDSL.g:11700:1: rule__XListLiteral__Group_3__0 : rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 ;
+    public final void rule__XListLiteral__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11704:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
+            // InternalActionDSL.g:11705:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XListLiteral__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group_3__0"
+
+
+    // $ANTLR start "rule__XListLiteral__Group_3__0__Impl"
+    // InternalActionDSL.g:11712:1: rule__XListLiteral__Group_3__0__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) ;
+    public final void rule__XListLiteral__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11716:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalActionDSL.g:11717:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            {
+            // InternalActionDSL.g:11717:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalActionDSL.g:11718:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); 
+            }
+            // InternalActionDSL.g:11719:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalActionDSL.g:11719:3: rule__XListLiteral__ElementsAssignment_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__ElementsAssignment_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__XListLiteral__Group_3__1"
+    // InternalActionDSL.g:11727:1: rule__XListLiteral__Group_3__1 : rule__XListLiteral__Group_3__1__Impl ;
+    public final void rule__XListLiteral__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11731:1: ( rule__XListLiteral__Group_3__1__Impl )
+            // InternalActionDSL.g:11732:2: rule__XListLiteral__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group_3__1"
+
+
+    // $ANTLR start "rule__XListLiteral__Group_3__1__Impl"
+    // InternalActionDSL.g:11738:1: rule__XListLiteral__Group_3__1__Impl : ( ( rule__XListLiteral__Group_3_1__0 )* ) ;
+    public final void rule__XListLiteral__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11742:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
+            // InternalActionDSL.g:11743:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            {
+            // InternalActionDSL.g:11743:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalActionDSL.g:11744:2: ( rule__XListLiteral__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup_3_1()); 
+            }
+            // InternalActionDSL.g:11745:2: ( rule__XListLiteral__Group_3_1__0 )*
+            loop101:
+            do {
+                int alt101=2;
+                int LA101_0 = input.LA(1);
+
+                if ( (LA101_0==103) ) {
+                    alt101=1;
+                }
+
+
+                switch (alt101) {
+            	case 1 :
+            	    // InternalActionDSL.g:11745:3: rule__XListLiteral__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XListLiteral__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop101;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getGroup_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__XListLiteral__Group_3_1__0"
+    // InternalActionDSL.g:11754:1: rule__XListLiteral__Group_3_1__0 : rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 ;
+    public final void rule__XListLiteral__Group_3_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11758:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
+            // InternalActionDSL.g:11759:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XListLiteral__Group_3_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group_3_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group_3_1__0"
+
+
+    // $ANTLR start "rule__XListLiteral__Group_3_1__0__Impl"
+    // InternalActionDSL.g:11766:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11770:1: ( ( ',' ) )
+            // InternalActionDSL.g:11771:1: ( ',' )
+            {
+            // InternalActionDSL.g:11771:1: ( ',' )
+            // InternalActionDSL.g:11772:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group_3_1__0__Impl"
+
+
+    // $ANTLR start "rule__XListLiteral__Group_3_1__1"
+    // InternalActionDSL.g:11781:1: rule__XListLiteral__Group_3_1__1 : rule__XListLiteral__Group_3_1__1__Impl ;
+    public final void rule__XListLiteral__Group_3_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11785:1: ( rule__XListLiteral__Group_3_1__1__Impl )
+            // InternalActionDSL.g:11786:2: rule__XListLiteral__Group_3_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__Group_3_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group_3_1__1"
+
+
+    // $ANTLR start "rule__XListLiteral__Group_3_1__1__Impl"
+    // InternalActionDSL.g:11792:1: rule__XListLiteral__Group_3_1__1__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) ;
+    public final void rule__XListLiteral__Group_3_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11796:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalActionDSL.g:11797:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            {
+            // InternalActionDSL.g:11797:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalActionDSL.g:11798:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+            // InternalActionDSL.g:11799:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalActionDSL.g:11799:3: rule__XListLiteral__ElementsAssignment_3_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XListLiteral__ElementsAssignment_3_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__Group_3_1__1__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group__0"
+    // InternalActionDSL.g:11808:1: rule__XClosure__Group__0 : rule__XClosure__Group__0__Impl rule__XClosure__Group__1 ;
+    public final void rule__XClosure__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11812:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
+            // InternalActionDSL.g:11813:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
+            {
+            pushFollow(FOLLOW_88);
+            rule__XClosure__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group__0"
+
+
+    // $ANTLR start "rule__XClosure__Group__0__Impl"
+    // InternalActionDSL.g:11820:1: rule__XClosure__Group__0__Impl : ( ( rule__XClosure__Group_0__0 ) ) ;
+    public final void rule__XClosure__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11824:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
+            // InternalActionDSL.g:11825:1: ( ( rule__XClosure__Group_0__0 ) )
+            {
+            // InternalActionDSL.g:11825:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalActionDSL.g:11826:2: ( rule__XClosure__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_0()); 
+            }
+            // InternalActionDSL.g:11827:2: ( rule__XClosure__Group_0__0 )
+            // InternalActionDSL.g:11827:3: rule__XClosure__Group_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getGroup_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group__1"
+    // InternalActionDSL.g:11835:1: rule__XClosure__Group__1 : rule__XClosure__Group__1__Impl rule__XClosure__Group__2 ;
+    public final void rule__XClosure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11839:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
+            // InternalActionDSL.g:11840:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
+            {
+            pushFollow(FOLLOW_88);
+            rule__XClosure__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group__1"
+
+
+    // $ANTLR start "rule__XClosure__Group__1__Impl"
+    // InternalActionDSL.g:11847:1: rule__XClosure__Group__1__Impl : ( ( rule__XClosure__Group_1__0 )? ) ;
+    public final void rule__XClosure__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11851:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
+            // InternalActionDSL.g:11852:1: ( ( rule__XClosure__Group_1__0 )? )
+            {
+            // InternalActionDSL.g:11852:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalActionDSL.g:11853:2: ( rule__XClosure__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:11854:2: ( rule__XClosure__Group_1__0 )?
+            int alt102=2;
+            alt102 = dfa102.predict(input);
+            switch (alt102) {
+                case 1 :
+                    // InternalActionDSL.g:11854:3: rule__XClosure__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XClosure__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group__2"
+    // InternalActionDSL.g:11862:1: rule__XClosure__Group__2 : rule__XClosure__Group__2__Impl rule__XClosure__Group__3 ;
+    public final void rule__XClosure__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11866:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
+            // InternalActionDSL.g:11867:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
+            {
+            pushFollow(FOLLOW_89);
+            rule__XClosure__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group__2"
+
+
+    // $ANTLR start "rule__XClosure__Group__2__Impl"
+    // InternalActionDSL.g:11874:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
+    public final void rule__XClosure__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11878:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
+            // InternalActionDSL.g:11879:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            {
+            // InternalActionDSL.g:11879:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalActionDSL.g:11880:2: ( rule__XClosure__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); 
+            }
+            // InternalActionDSL.g:11881:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalActionDSL.g:11881:3: rule__XClosure__ExpressionAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__ExpressionAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group__3"
+    // InternalActionDSL.g:11889:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
+    public final void rule__XClosure__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11893:1: ( rule__XClosure__Group__3__Impl )
+            // InternalActionDSL.g:11894:2: rule__XClosure__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group__3"
+
+
+    // $ANTLR start "rule__XClosure__Group__3__Impl"
+    // InternalActionDSL.g:11900:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
+    public final void rule__XClosure__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11904:1: ( ( ']' ) )
+            // InternalActionDSL.g:11905:1: ( ']' )
+            {
+            // InternalActionDSL.g:11905:1: ( ']' )
+            // InternalActionDSL.g:11906:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
+            }
+            match(input,104,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_0__0"
+    // InternalActionDSL.g:11916:1: rule__XClosure__Group_0__0 : rule__XClosure__Group_0__0__Impl ;
+    public final void rule__XClosure__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11920:1: ( rule__XClosure__Group_0__0__Impl )
+            // InternalActionDSL.g:11921:2: rule__XClosure__Group_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_0__0"
+
+
+    // $ANTLR start "rule__XClosure__Group_0__0__Impl"
+    // InternalActionDSL.g:11927:1: rule__XClosure__Group_0__0__Impl : ( ( rule__XClosure__Group_0_0__0 ) ) ;
+    public final void rule__XClosure__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11931:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
+            // InternalActionDSL.g:11932:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            {
+            // InternalActionDSL.g:11932:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalActionDSL.g:11933:2: ( rule__XClosure__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_0_0()); 
+            }
+            // InternalActionDSL.g:11934:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalActionDSL.g:11934:3: rule__XClosure__Group_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getGroup_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_0_0__0"
+    // InternalActionDSL.g:11943:1: rule__XClosure__Group_0_0__0 : rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 ;
+    public final void rule__XClosure__Group_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11947:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
+            // InternalActionDSL.g:11948:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
+            {
+            pushFollow(FOLLOW_51);
+            rule__XClosure__Group_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_0_0__0"
+
+
+    // $ANTLR start "rule__XClosure__Group_0_0__0__Impl"
+    // InternalActionDSL.g:11955:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11959:1: ( ( () ) )
+            // InternalActionDSL.g:11960:1: ( () )
+            {
+            // InternalActionDSL.g:11960:1: ( () )
+            // InternalActionDSL.g:11961:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); 
+            }
+            // InternalActionDSL.g:11962:2: ()
+            // InternalActionDSL.g:11962:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_0_0__1"
+    // InternalActionDSL.g:11970:1: rule__XClosure__Group_0_0__1 : rule__XClosure__Group_0_0__1__Impl ;
+    public final void rule__XClosure__Group_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11974:1: ( rule__XClosure__Group_0_0__1__Impl )
+            // InternalActionDSL.g:11975:2: rule__XClosure__Group_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_0_0__1"
+
+
+    // $ANTLR start "rule__XClosure__Group_0_0__1__Impl"
+    // InternalActionDSL.g:11981:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
+    public final void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:11985:1: ( ( '[' ) )
+            // InternalActionDSL.g:11986:1: ( '[' )
+            {
+            // InternalActionDSL.g:11986:1: ( '[' )
+            // InternalActionDSL.g:11987:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
+            }
+            match(input,106,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_1__0"
+    // InternalActionDSL.g:11997:1: rule__XClosure__Group_1__0 : rule__XClosure__Group_1__0__Impl ;
+    public final void rule__XClosure__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12001:1: ( rule__XClosure__Group_1__0__Impl )
+            // InternalActionDSL.g:12002:2: rule__XClosure__Group_1__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1__0"
+
+
+    // $ANTLR start "rule__XClosure__Group_1__0__Impl"
+    // InternalActionDSL.g:12008:1: rule__XClosure__Group_1__0__Impl : ( ( rule__XClosure__Group_1_0__0 ) ) ;
+    public final void rule__XClosure__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12012:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
+            // InternalActionDSL.g:12013:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            {
+            // InternalActionDSL.g:12013:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalActionDSL.g:12014:2: ( rule__XClosure__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0()); 
+            }
+            // InternalActionDSL.g:12015:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalActionDSL.g:12015:3: rule__XClosure__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0__0"
+    // InternalActionDSL.g:12024:1: rule__XClosure__Group_1_0__0 : rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 ;
+    public final void rule__XClosure__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12028:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
+            // InternalActionDSL.g:12029:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
+            {
+            pushFollow(FOLLOW_90);
+            rule__XClosure__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_1_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0__0"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0__0__Impl"
+    // InternalActionDSL.g:12036:1: rule__XClosure__Group_1_0__0__Impl : ( ( rule__XClosure__Group_1_0_0__0 )? ) ;
+    public final void rule__XClosure__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12040:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
+            // InternalActionDSL.g:12041:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            {
+            // InternalActionDSL.g:12041:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalActionDSL.g:12042:2: ( rule__XClosure__Group_1_0_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0_0()); 
+            }
+            // InternalActionDSL.g:12043:2: ( rule__XClosure__Group_1_0_0__0 )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
+
+            if ( (LA103_0==RULE_ID||LA103_0==33||LA103_0==101) ) {
+                alt103=1;
+            }
+            switch (alt103) {
+                case 1 :
+                    // InternalActionDSL.g:12043:3: rule__XClosure__Group_1_0_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XClosure__Group_1_0_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getGroup_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0__1"
+    // InternalActionDSL.g:12051:1: rule__XClosure__Group_1_0__1 : rule__XClosure__Group_1_0__1__Impl ;
+    public final void rule__XClosure__Group_1_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12055:1: ( rule__XClosure__Group_1_0__1__Impl )
+            // InternalActionDSL.g:12056:2: rule__XClosure__Group_1_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_1_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0__1"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0__1__Impl"
+    // InternalActionDSL.g:12062:1: rule__XClosure__Group_1_0__1__Impl : ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) ;
+    public final void rule__XClosure__Group_1_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12066:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
+            // InternalActionDSL.g:12067:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            {
+            // InternalActionDSL.g:12067:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalActionDSL.g:12068:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); 
+            }
+            // InternalActionDSL.g:12069:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalActionDSL.g:12069:3: rule__XClosure__ExplicitSyntaxAssignment_1_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__ExplicitSyntaxAssignment_1_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0__1__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0_0__0"
+    // InternalActionDSL.g:12078:1: rule__XClosure__Group_1_0_0__0 : rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 ;
+    public final void rule__XClosure__Group_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12082:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
+            // InternalActionDSL.g:12083:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XClosure__Group_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0_0__0"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0_0__0__Impl"
+    // InternalActionDSL.g:12090:1: rule__XClosure__Group_1_0_0__0__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) ;
+    public final void rule__XClosure__Group_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12094:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
+            // InternalActionDSL.g:12095:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            {
+            // InternalActionDSL.g:12095:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalActionDSL.g:12096:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:12097:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalActionDSL.g:12097:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0_0__1"
+    // InternalActionDSL.g:12105:1: rule__XClosure__Group_1_0_0__1 : rule__XClosure__Group_1_0_0__1__Impl ;
+    public final void rule__XClosure__Group_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12109:1: ( rule__XClosure__Group_1_0_0__1__Impl )
+            // InternalActionDSL.g:12110:2: rule__XClosure__Group_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0_0__1"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0_0__1__Impl"
+    // InternalActionDSL.g:12116:1: rule__XClosure__Group_1_0_0__1__Impl : ( ( rule__XClosure__Group_1_0_0_1__0 )* ) ;
+    public final void rule__XClosure__Group_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12120:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
+            // InternalActionDSL.g:12121:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            {
+            // InternalActionDSL.g:12121:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalActionDSL.g:12122:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); 
+            }
+            // InternalActionDSL.g:12123:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            loop104:
+            do {
+                int alt104=2;
+                int LA104_0 = input.LA(1);
+
+                if ( (LA104_0==103) ) {
+                    alt104=1;
+                }
+
+
+                switch (alt104) {
+            	case 1 :
+            	    // InternalActionDSL.g:12123:3: rule__XClosure__Group_1_0_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XClosure__Group_1_0_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop104;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0_0_1__0"
+    // InternalActionDSL.g:12132:1: rule__XClosure__Group_1_0_0_1__0 : rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 ;
+    public final void rule__XClosure__Group_1_0_0_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12136:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
+            // InternalActionDSL.g:12137:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__XClosure__Group_1_0_0_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_1_0_0_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0_0_1__0"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0_0_1__0__Impl"
+    // InternalActionDSL.g:12144:1: rule__XClosure__Group_1_0_0_1__0__Impl : ( ',' ) ;
+    public final void rule__XClosure__Group_1_0_0_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12148:1: ( ( ',' ) )
+            // InternalActionDSL.g:12149:1: ( ',' )
+            {
+            // InternalActionDSL.g:12149:1: ( ',' )
+            // InternalActionDSL.g:12150:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0_0_1__0__Impl"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0_0_1__1"
+    // InternalActionDSL.g:12159:1: rule__XClosure__Group_1_0_0_1__1 : rule__XClosure__Group_1_0_0_1__1__Impl ;
+    public final void rule__XClosure__Group_1_0_0_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12163:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
+            // InternalActionDSL.g:12164:2: rule__XClosure__Group_1_0_0_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__Group_1_0_0_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0_0_1__1"
+
+
+    // $ANTLR start "rule__XClosure__Group_1_0_0_1__1__Impl"
+    // InternalActionDSL.g:12170:1: rule__XClosure__Group_1_0_0_1__1__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) ;
+    public final void rule__XClosure__Group_1_0_0_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12174:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
+            // InternalActionDSL.g:12175:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            {
+            // InternalActionDSL.g:12175:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalActionDSL.g:12176:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); 
+            }
+            // InternalActionDSL.g:12177:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalActionDSL.g:12177:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__Group_1_0_0_1__1__Impl"
+
+
+    // $ANTLR start "rule__XExpressionInClosure__Group__0"
+    // InternalActionDSL.g:12186:1: rule__XExpressionInClosure__Group__0 : rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 ;
+    public final void rule__XExpressionInClosure__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12190:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
+            // InternalActionDSL.g:12191:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
+            {
+            pushFollow(FOLLOW_88);
+            rule__XExpressionInClosure__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XExpressionInClosure__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionInClosure__Group__0"
+
+
+    // $ANTLR start "rule__XExpressionInClosure__Group__0__Impl"
+    // InternalActionDSL.g:12198:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
+    public final void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12202:1: ( ( () ) )
+            // InternalActionDSL.g:12203:1: ( () )
+            {
+            // InternalActionDSL.g:12203:1: ( () )
+            // InternalActionDSL.g:12204:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:12205:2: ()
+            // InternalActionDSL.g:12205:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionInClosure__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XExpressionInClosure__Group__1"
+    // InternalActionDSL.g:12213:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
+    public final void rule__XExpressionInClosure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12217:1: ( rule__XExpressionInClosure__Group__1__Impl )
+            // InternalActionDSL.g:12218:2: rule__XExpressionInClosure__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XExpressionInClosure__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionInClosure__Group__1"
+
+
+    // $ANTLR start "rule__XExpressionInClosure__Group__1__Impl"
+    // InternalActionDSL.g:12224:1: rule__XExpressionInClosure__Group__1__Impl : ( ( rule__XExpressionInClosure__Group_1__0 )* ) ;
+    public final void rule__XExpressionInClosure__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12228:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
+            // InternalActionDSL.g:12229:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            {
+            // InternalActionDSL.g:12229:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalActionDSL.g:12230:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:12231:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            loop105:
+            do {
+                int alt105=2;
+                int LA105_0 = input.LA(1);
+
+                if ( ((LA105_0>=RULE_ID && LA105_0<=RULE_DECIMAL)||LA105_0==29||(LA105_0>=36 && LA105_0<=37)||LA105_0==42||(LA105_0>=46 && LA105_0<=52)||LA105_0==79||LA105_0==101||(LA105_0>=105 && LA105_0<=106)||LA105_0==109||LA105_0==111||(LA105_0>=115 && LA105_0<=123)||LA105_0==125||(LA105_0>=139 && LA105_0<=140)) ) {
+                    alt105=1;
+                }
+
+
+                switch (alt105) {
+            	case 1 :
+            	    // InternalActionDSL.g:12231:3: rule__XExpressionInClosure__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_91);
+            	    rule__XExpressionInClosure__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop105;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionInClosure__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XExpressionInClosure__Group_1__0"
+    // InternalActionDSL.g:12240:1: rule__XExpressionInClosure__Group_1__0 : rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 ;
+    public final void rule__XExpressionInClosure__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12244:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
+            // InternalActionDSL.g:12245:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
+            {
+            pushFollow(FOLLOW_39);
+            rule__XExpressionInClosure__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XExpressionInClosure__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionInClosure__Group_1__0"
+
+
+    // $ANTLR start "rule__XExpressionInClosure__Group_1__0__Impl"
+    // InternalActionDSL.g:12252:1: rule__XExpressionInClosure__Group_1__0__Impl : ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) ;
+    public final void rule__XExpressionInClosure__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12256:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
+            // InternalActionDSL.g:12257:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            {
+            // InternalActionDSL.g:12257:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalActionDSL.g:12258:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); 
+            }
+            // InternalActionDSL.g:12259:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalActionDSL.g:12259:3: rule__XExpressionInClosure__ExpressionsAssignment_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XExpressionInClosure__ExpressionsAssignment_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionInClosure__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XExpressionInClosure__Group_1__1"
+    // InternalActionDSL.g:12267:1: rule__XExpressionInClosure__Group_1__1 : rule__XExpressionInClosure__Group_1__1__Impl ;
+    public final void rule__XExpressionInClosure__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12271:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
+            // InternalActionDSL.g:12272:2: rule__XExpressionInClosure__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XExpressionInClosure__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionInClosure__Group_1__1"
+
+
+    // $ANTLR start "rule__XExpressionInClosure__Group_1__1__Impl"
+    // InternalActionDSL.g:12278:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
+    public final void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12282:1: ( ( ( ';' )? ) )
+            // InternalActionDSL.g:12283:1: ( ( ';' )? )
+            {
+            // InternalActionDSL.g:12283:1: ( ( ';' )? )
+            // InternalActionDSL.g:12284:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); 
+            }
+            // InternalActionDSL.g:12285:2: ( ';' )?
+            int alt106=2;
+            int LA106_0 = input.LA(1);
+
+            if ( (LA106_0==99) ) {
+                alt106=1;
+            }
+            switch (alt106) {
+                case 1 :
+                    // InternalActionDSL.g:12285:3: ';'
+                    {
+                    match(input,99,FOLLOW_2); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionInClosure__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group__0"
+    // InternalActionDSL.g:12294:1: rule__XShortClosure__Group__0 : rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 ;
+    public final void rule__XShortClosure__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12298:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
+            // InternalActionDSL.g:12299:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XShortClosure__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group__0"
+
+
+    // $ANTLR start "rule__XShortClosure__Group__0__Impl"
+    // InternalActionDSL.g:12306:1: rule__XShortClosure__Group__0__Impl : ( ( rule__XShortClosure__Group_0__0 ) ) ;
+    public final void rule__XShortClosure__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12310:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
+            // InternalActionDSL.g:12311:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            {
+            // InternalActionDSL.g:12311:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalActionDSL.g:12312:2: ( rule__XShortClosure__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0()); 
+            }
+            // InternalActionDSL.g:12313:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalActionDSL.g:12313:3: rule__XShortClosure__Group_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getGroup_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group__1"
+    // InternalActionDSL.g:12321:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
+    public final void rule__XShortClosure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12325:1: ( rule__XShortClosure__Group__1__Impl )
+            // InternalActionDSL.g:12326:2: rule__XShortClosure__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group__1"
+
+
+    // $ANTLR start "rule__XShortClosure__Group__1__Impl"
+    // InternalActionDSL.g:12332:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
+    public final void rule__XShortClosure__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12336:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
+            // InternalActionDSL.g:12337:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:12337:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalActionDSL.g:12338:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); 
+            }
+            // InternalActionDSL.g:12339:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalActionDSL.g:12339:3: rule__XShortClosure__ExpressionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__ExpressionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0__0"
+    // InternalActionDSL.g:12348:1: rule__XShortClosure__Group_0__0 : rule__XShortClosure__Group_0__0__Impl ;
+    public final void rule__XShortClosure__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12352:1: ( rule__XShortClosure__Group_0__0__Impl )
+            // InternalActionDSL.g:12353:2: rule__XShortClosure__Group_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0__0"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0__0__Impl"
+    // InternalActionDSL.g:12359:1: rule__XShortClosure__Group_0__0__Impl : ( ( rule__XShortClosure__Group_0_0__0 ) ) ;
+    public final void rule__XShortClosure__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12363:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
+            // InternalActionDSL.g:12364:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            {
+            // InternalActionDSL.g:12364:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalActionDSL.g:12365:2: ( rule__XShortClosure__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0()); 
+            }
+            // InternalActionDSL.g:12366:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalActionDSL.g:12366:3: rule__XShortClosure__Group_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getGroup_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0__0"
+    // InternalActionDSL.g:12375:1: rule__XShortClosure__Group_0_0__0 : rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 ;
+    public final void rule__XShortClosure__Group_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12379:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
+            // InternalActionDSL.g:12380:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
+            {
+            pushFollow(FOLLOW_90);
+            rule__XShortClosure__Group_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0__0"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0__0__Impl"
+    // InternalActionDSL.g:12387:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12391:1: ( ( () ) )
+            // InternalActionDSL.g:12392:1: ( () )
+            {
+            // InternalActionDSL.g:12392:1: ( () )
+            // InternalActionDSL.g:12393:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); 
+            }
+            // InternalActionDSL.g:12394:2: ()
+            // InternalActionDSL.g:12394:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0__1"
+    // InternalActionDSL.g:12402:1: rule__XShortClosure__Group_0_0__1 : rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 ;
+    public final void rule__XShortClosure__Group_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12406:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
+            // InternalActionDSL.g:12407:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
+            {
+            pushFollow(FOLLOW_90);
+            rule__XShortClosure__Group_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0__1"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0__1__Impl"
+    // InternalActionDSL.g:12414:1: rule__XShortClosure__Group_0_0__1__Impl : ( ( rule__XShortClosure__Group_0_0_1__0 )? ) ;
+    public final void rule__XShortClosure__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12418:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
+            // InternalActionDSL.g:12419:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            {
+            // InternalActionDSL.g:12419:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalActionDSL.g:12420:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); 
+            }
+            // InternalActionDSL.g:12421:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            int alt107=2;
+            int LA107_0 = input.LA(1);
+
+            if ( (LA107_0==RULE_ID||LA107_0==33||LA107_0==101) ) {
+                alt107=1;
+            }
+            switch (alt107) {
+                case 1 :
+                    // InternalActionDSL.g:12421:3: rule__XShortClosure__Group_0_0_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XShortClosure__Group_0_0_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0__2"
+    // InternalActionDSL.g:12429:1: rule__XShortClosure__Group_0_0__2 : rule__XShortClosure__Group_0_0__2__Impl ;
+    public final void rule__XShortClosure__Group_0_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12433:1: ( rule__XShortClosure__Group_0_0__2__Impl )
+            // InternalActionDSL.g:12434:2: rule__XShortClosure__Group_0_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0__2"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0__2__Impl"
+    // InternalActionDSL.g:12440:1: rule__XShortClosure__Group_0_0__2__Impl : ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) ;
+    public final void rule__XShortClosure__Group_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12444:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
+            // InternalActionDSL.g:12445:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            {
+            // InternalActionDSL.g:12445:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalActionDSL.g:12446:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); 
+            }
+            // InternalActionDSL.g:12447:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalActionDSL.g:12447:3: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0__2__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0_1__0"
+    // InternalActionDSL.g:12456:1: rule__XShortClosure__Group_0_0_1__0 : rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 ;
+    public final void rule__XShortClosure__Group_0_0_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12460:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
+            // InternalActionDSL.g:12461:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XShortClosure__Group_0_0_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0_0_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0_1__0"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0_1__0__Impl"
+    // InternalActionDSL.g:12468:1: rule__XShortClosure__Group_0_0_1__0__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) ;
+    public final void rule__XShortClosure__Group_0_0_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12472:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
+            // InternalActionDSL.g:12473:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            {
+            // InternalActionDSL.g:12473:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalActionDSL.g:12474:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); 
+            }
+            // InternalActionDSL.g:12475:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalActionDSL.g:12475:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0_1__0__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0_1__1"
+    // InternalActionDSL.g:12483:1: rule__XShortClosure__Group_0_0_1__1 : rule__XShortClosure__Group_0_0_1__1__Impl ;
+    public final void rule__XShortClosure__Group_0_0_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12487:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
+            // InternalActionDSL.g:12488:2: rule__XShortClosure__Group_0_0_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0_0_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0_1__1"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0_1__1__Impl"
+    // InternalActionDSL.g:12494:1: rule__XShortClosure__Group_0_0_1__1__Impl : ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) ;
+    public final void rule__XShortClosure__Group_0_0_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12498:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
+            // InternalActionDSL.g:12499:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            {
+            // InternalActionDSL.g:12499:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalActionDSL.g:12500:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); 
+            }
+            // InternalActionDSL.g:12501:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            loop108:
+            do {
+                int alt108=2;
+                int LA108_0 = input.LA(1);
+
+                if ( (LA108_0==103) ) {
+                    alt108=1;
+                }
+
+
+                switch (alt108) {
+            	case 1 :
+            	    // InternalActionDSL.g:12501:3: rule__XShortClosure__Group_0_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XShortClosure__Group_0_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop108;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0_1__1__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0"
+    // InternalActionDSL.g:12510:1: rule__XShortClosure__Group_0_0_1_1__0 : rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 ;
+    public final void rule__XShortClosure__Group_0_0_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12514:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
+            // InternalActionDSL.g:12515:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__XShortClosure__Group_0_0_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0_0_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0_1_1__0"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0__Impl"
+    // InternalActionDSL.g:12522:1: rule__XShortClosure__Group_0_0_1_1__0__Impl : ( ',' ) ;
+    public final void rule__XShortClosure__Group_0_0_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12526:1: ( ( ',' ) )
+            // InternalActionDSL.g:12527:1: ( ',' )
+            {
+            // InternalActionDSL.g:12527:1: ( ',' )
+            // InternalActionDSL.g:12528:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1"
+    // InternalActionDSL.g:12537:1: rule__XShortClosure__Group_0_0_1_1__1 : rule__XShortClosure__Group_0_0_1_1__1__Impl ;
+    public final void rule__XShortClosure__Group_0_0_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12541:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
+            // InternalActionDSL.g:12542:2: rule__XShortClosure__Group_0_0_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__Group_0_0_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0_1_1__1"
+
+
+    // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1__Impl"
+    // InternalActionDSL.g:12548:1: rule__XShortClosure__Group_0_0_1_1__1__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) ;
+    public final void rule__XShortClosure__Group_0_0_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12552:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
+            // InternalActionDSL.g:12553:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            {
+            // InternalActionDSL.g:12553:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalActionDSL.g:12554:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); 
+            }
+            // InternalActionDSL.g:12555:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalActionDSL.g:12555:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__Group_0_0_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XParenthesizedExpression__Group__0"
+    // InternalActionDSL.g:12564:1: rule__XParenthesizedExpression__Group__0 : rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 ;
+    public final void rule__XParenthesizedExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12568:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
+            // InternalActionDSL.g:12569:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XParenthesizedExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XParenthesizedExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XParenthesizedExpression__Group__0"
+
+
+    // $ANTLR start "rule__XParenthesizedExpression__Group__0__Impl"
+    // InternalActionDSL.g:12576:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
+    public final void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12580:1: ( ( '(' ) )
+            // InternalActionDSL.g:12581:1: ( '(' )
+            {
+            // InternalActionDSL.g:12581:1: ( '(' )
+            // InternalActionDSL.g:12582:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XParenthesizedExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XParenthesizedExpression__Group__1"
+    // InternalActionDSL.g:12591:1: rule__XParenthesizedExpression__Group__1 : rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 ;
+    public final void rule__XParenthesizedExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12595:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
+            // InternalActionDSL.g:12596:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
+            {
+            pushFollow(FOLLOW_92);
+            rule__XParenthesizedExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XParenthesizedExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XParenthesizedExpression__Group__1"
+
+
+    // $ANTLR start "rule__XParenthesizedExpression__Group__1__Impl"
+    // InternalActionDSL.g:12603:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
+    public final void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12607:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:12608:1: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:12608:1: ( ruleXExpression )
+            // InternalActionDSL.g:12609:2: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XParenthesizedExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XParenthesizedExpression__Group__2"
+    // InternalActionDSL.g:12618:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
+    public final void rule__XParenthesizedExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12622:1: ( rule__XParenthesizedExpression__Group__2__Impl )
+            // InternalActionDSL.g:12623:2: rule__XParenthesizedExpression__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XParenthesizedExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XParenthesizedExpression__Group__2"
+
+
+    // $ANTLR start "rule__XParenthesizedExpression__Group__2__Impl"
+    // InternalActionDSL.g:12629:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12633:1: ( ( ')' ) )
+            // InternalActionDSL.g:12634:1: ( ')' )
+            {
+            // InternalActionDSL.g:12634:1: ( ')' )
+            // InternalActionDSL.g:12635:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XParenthesizedExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__0"
+    // InternalActionDSL.g:12645:1: rule__XIfExpression__Group__0 : rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 ;
+    public final void rule__XIfExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12649:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
+            // InternalActionDSL.g:12650:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
+            {
+            pushFollow(FOLLOW_93);
+            rule__XIfExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__0"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__0__Impl"
+    // InternalActionDSL.g:12657:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XIfExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12661:1: ( ( () ) )
+            // InternalActionDSL.g:12662:1: ( () )
+            {
+            // InternalActionDSL.g:12662:1: ( () )
+            // InternalActionDSL.g:12663:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:12664:2: ()
+            // InternalActionDSL.g:12664:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__1"
+    // InternalActionDSL.g:12672:1: rule__XIfExpression__Group__1 : rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 ;
+    public final void rule__XIfExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12676:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
+            // InternalActionDSL.g:12677:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
+            {
+            pushFollow(FOLLOW_43);
+            rule__XIfExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__1"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__1__Impl"
+    // InternalActionDSL.g:12684:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
+    public final void rule__XIfExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12688:1: ( ( 'if' ) )
+            // InternalActionDSL.g:12689:1: ( 'if' )
+            {
+            // InternalActionDSL.g:12689:1: ( 'if' )
+            // InternalActionDSL.g:12690:2: 'if'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
+            }
+            match(input,109,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__2"
+    // InternalActionDSL.g:12699:1: rule__XIfExpression__Group__2 : rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 ;
+    public final void rule__XIfExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12703:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
+            // InternalActionDSL.g:12704:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
+            {
+            pushFollow(FOLLOW_47);
+            rule__XIfExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__2"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__2__Impl"
+    // InternalActionDSL.g:12711:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XIfExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12715:1: ( ( '(' ) )
+            // InternalActionDSL.g:12716:1: ( '(' )
+            {
+            // InternalActionDSL.g:12716:1: ( '(' )
+            // InternalActionDSL.g:12717:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__3"
+    // InternalActionDSL.g:12726:1: rule__XIfExpression__Group__3 : rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 ;
+    public final void rule__XIfExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12730:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
+            // InternalActionDSL.g:12731:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
+            {
+            pushFollow(FOLLOW_92);
+            rule__XIfExpression__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__3"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__3__Impl"
+    // InternalActionDSL.g:12738:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
+    public final void rule__XIfExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12742:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
+            // InternalActionDSL.g:12743:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            {
+            // InternalActionDSL.g:12743:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalActionDSL.g:12744:2: ( rule__XIfExpression__IfAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); 
+            }
+            // InternalActionDSL.g:12745:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalActionDSL.g:12745:3: rule__XIfExpression__IfAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__IfAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__4"
+    // InternalActionDSL.g:12753:1: rule__XIfExpression__Group__4 : rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 ;
+    public final void rule__XIfExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12757:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
+            // InternalActionDSL.g:12758:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
+            {
+            pushFollow(FOLLOW_47);
+            rule__XIfExpression__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__4"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__4__Impl"
+    // InternalActionDSL.g:12765:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
+    public final void rule__XIfExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12769:1: ( ( ')' ) )
+            // InternalActionDSL.g:12770:1: ( ')' )
+            {
+            // InternalActionDSL.g:12770:1: ( ')' )
+            // InternalActionDSL.g:12771:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__5"
+    // InternalActionDSL.g:12780:1: rule__XIfExpression__Group__5 : rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 ;
+    public final void rule__XIfExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12784:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
+            // InternalActionDSL.g:12785:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
+            {
+            pushFollow(FOLLOW_94);
+            rule__XIfExpression__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__5"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__5__Impl"
+    // InternalActionDSL.g:12792:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
+    public final void rule__XIfExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12796:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
+            // InternalActionDSL.g:12797:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            {
+            // InternalActionDSL.g:12797:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalActionDSL.g:12798:2: ( rule__XIfExpression__ThenAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); 
+            }
+            // InternalActionDSL.g:12799:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalActionDSL.g:12799:3: rule__XIfExpression__ThenAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__ThenAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__5__Impl"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__6"
+    // InternalActionDSL.g:12807:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
+    public final void rule__XIfExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12811:1: ( rule__XIfExpression__Group__6__Impl )
+            // InternalActionDSL.g:12812:2: rule__XIfExpression__Group__6__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__6"
+
+
+    // $ANTLR start "rule__XIfExpression__Group__6__Impl"
+    // InternalActionDSL.g:12818:1: rule__XIfExpression__Group__6__Impl : ( ( rule__XIfExpression__Group_6__0 )? ) ;
+    public final void rule__XIfExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12822:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
+            // InternalActionDSL.g:12823:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            {
+            // InternalActionDSL.g:12823:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalActionDSL.g:12824:2: ( rule__XIfExpression__Group_6__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup_6()); 
+            }
+            // InternalActionDSL.g:12825:2: ( rule__XIfExpression__Group_6__0 )?
+            int alt109=2;
+            int LA109_0 = input.LA(1);
+
+            if ( (LA109_0==110) ) {
+                int LA109_1 = input.LA(2);
+
+                if ( (synpred175_InternalActionDSL()) ) {
+                    alt109=1;
+                }
+            }
+            switch (alt109) {
+                case 1 :
+                    // InternalActionDSL.g:12825:3: rule__XIfExpression__Group_6__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XIfExpression__Group_6__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getGroup_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group__6__Impl"
+
+
+    // $ANTLR start "rule__XIfExpression__Group_6__0"
+    // InternalActionDSL.g:12834:1: rule__XIfExpression__Group_6__0 : rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 ;
+    public final void rule__XIfExpression__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12838:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
+            // InternalActionDSL.g:12839:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XIfExpression__Group_6__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group_6__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group_6__0"
+
+
+    // $ANTLR start "rule__XIfExpression__Group_6__0__Impl"
+    // InternalActionDSL.g:12846:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
+    public final void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12850:1: ( ( ( 'else' ) ) )
+            // InternalActionDSL.g:12851:1: ( ( 'else' ) )
+            {
+            // InternalActionDSL.g:12851:1: ( ( 'else' ) )
+            // InternalActionDSL.g:12852:2: ( 'else' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); 
+            }
+            // InternalActionDSL.g:12853:2: ( 'else' )
+            // InternalActionDSL.g:12853:3: 'else'
+            {
+            match(input,110,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__XIfExpression__Group_6__1"
+    // InternalActionDSL.g:12861:1: rule__XIfExpression__Group_6__1 : rule__XIfExpression__Group_6__1__Impl ;
+    public final void rule__XIfExpression__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12865:1: ( rule__XIfExpression__Group_6__1__Impl )
+            // InternalActionDSL.g:12866:2: rule__XIfExpression__Group_6__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__Group_6__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group_6__1"
+
+
+    // $ANTLR start "rule__XIfExpression__Group_6__1__Impl"
+    // InternalActionDSL.g:12872:1: rule__XIfExpression__Group_6__1__Impl : ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) ;
+    public final void rule__XIfExpression__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12876:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
+            // InternalActionDSL.g:12877:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            {
+            // InternalActionDSL.g:12877:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalActionDSL.g:12878:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); 
+            }
+            // InternalActionDSL.g:12879:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalActionDSL.g:12879:3: rule__XIfExpression__ElseAssignment_6_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XIfExpression__ElseAssignment_6_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__0"
+    // InternalActionDSL.g:12888:1: rule__XSwitchExpression__Group__0 : rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 ;
+    public final void rule__XSwitchExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12892:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
+            // InternalActionDSL.g:12893:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
+            {
+            pushFollow(FOLLOW_95);
+            rule__XSwitchExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__0"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__0__Impl"
+    // InternalActionDSL.g:12900:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12904:1: ( ( () ) )
+            // InternalActionDSL.g:12905:1: ( () )
+            {
+            // InternalActionDSL.g:12905:1: ( () )
+            // InternalActionDSL.g:12906:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:12907:2: ()
+            // InternalActionDSL.g:12907:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__1"
+    // InternalActionDSL.g:12915:1: rule__XSwitchExpression__Group__1 : rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 ;
+    public final void rule__XSwitchExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12919:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
+            // InternalActionDSL.g:12920:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
+            {
+            pushFollow(FOLLOW_96);
+            rule__XSwitchExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__1__Impl"
+    // InternalActionDSL.g:12927:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
+    public final void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12931:1: ( ( 'switch' ) )
+            // InternalActionDSL.g:12932:1: ( 'switch' )
+            {
+            // InternalActionDSL.g:12932:1: ( 'switch' )
+            // InternalActionDSL.g:12933:2: 'switch'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
+            }
+            match(input,111,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__2"
+    // InternalActionDSL.g:12942:1: rule__XSwitchExpression__Group__2 : rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 ;
+    public final void rule__XSwitchExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12946:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
+            // InternalActionDSL.g:12947:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
+            {
+            pushFollow(FOLLOW_8);
+            rule__XSwitchExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__2"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__2__Impl"
+    // InternalActionDSL.g:12954:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
+    public final void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12958:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
+            // InternalActionDSL.g:12959:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            {
+            // InternalActionDSL.g:12959:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalActionDSL.g:12960:2: ( rule__XSwitchExpression__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); 
+            }
+            // InternalActionDSL.g:12961:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalActionDSL.g:12961:3: rule__XSwitchExpression__Alternatives_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Alternatives_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__3"
+    // InternalActionDSL.g:12969:1: rule__XSwitchExpression__Group__3 : rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 ;
+    public final void rule__XSwitchExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12973:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
+            // InternalActionDSL.g:12974:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
+            {
+            pushFollow(FOLLOW_97);
+            rule__XSwitchExpression__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__3"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__3__Impl"
+    // InternalActionDSL.g:12981:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
+    public final void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:12985:1: ( ( '{' ) )
+            // InternalActionDSL.g:12986:1: ( '{' )
+            {
+            // InternalActionDSL.g:12986:1: ( '{' )
+            // InternalActionDSL.g:12987:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
+            }
+            match(input,79,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__4"
+    // InternalActionDSL.g:12996:1: rule__XSwitchExpression__Group__4 : rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 ;
+    public final void rule__XSwitchExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13000:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
+            // InternalActionDSL.g:13001:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
+            {
+            pushFollow(FOLLOW_97);
+            rule__XSwitchExpression__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__4"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__4__Impl"
+    // InternalActionDSL.g:13008:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
+    public final void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13012:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
+            // InternalActionDSL.g:13013:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            {
+            // InternalActionDSL.g:13013:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalActionDSL.g:13014:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); 
+            }
+            // InternalActionDSL.g:13015:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            loop110:
+            do {
+                int alt110=2;
+                int LA110_0 = input.LA(1);
+
+                if ( (LA110_0==RULE_ID||LA110_0==33||LA110_0==101||LA110_0==103||LA110_0==112||LA110_0==114) ) {
+                    alt110=1;
+                }
+
+
+                switch (alt110) {
+            	case 1 :
+            	    // InternalActionDSL.g:13015:3: rule__XSwitchExpression__CasesAssignment_4
+            	    {
+            	    pushFollow(FOLLOW_98);
+            	    rule__XSwitchExpression__CasesAssignment_4();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop110;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__5"
+    // InternalActionDSL.g:13023:1: rule__XSwitchExpression__Group__5 : rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 ;
+    public final void rule__XSwitchExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13027:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
+            // InternalActionDSL.g:13028:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
+            {
+            pushFollow(FOLLOW_97);
+            rule__XSwitchExpression__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__5"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__5__Impl"
+    // InternalActionDSL.g:13035:1: rule__XSwitchExpression__Group__5__Impl : ( ( rule__XSwitchExpression__Group_5__0 )? ) ;
+    public final void rule__XSwitchExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13039:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
+            // InternalActionDSL.g:13040:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            {
+            // InternalActionDSL.g:13040:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalActionDSL.g:13041:2: ( rule__XSwitchExpression__Group_5__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); 
+            }
+            // InternalActionDSL.g:13042:2: ( rule__XSwitchExpression__Group_5__0 )?
+            int alt111=2;
+            int LA111_0 = input.LA(1);
+
+            if ( (LA111_0==113) ) {
+                alt111=1;
+            }
+            switch (alt111) {
+                case 1 :
+                    // InternalActionDSL.g:13042:3: rule__XSwitchExpression__Group_5__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XSwitchExpression__Group_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__5__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__6"
+    // InternalActionDSL.g:13050:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
+    public final void rule__XSwitchExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13054:1: ( rule__XSwitchExpression__Group__6__Impl )
+            // InternalActionDSL.g:13055:2: rule__XSwitchExpression__Group__6__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__6"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__6__Impl"
+    // InternalActionDSL.g:13061:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
+    public final void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13065:1: ( ( '}' ) )
+            // InternalActionDSL.g:13066:1: ( '}' )
+            {
+            // InternalActionDSL.g:13066:1: ( '}' )
+            // InternalActionDSL.g:13067:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
+            }
+            match(input,80,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__6__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0__0"
+    // InternalActionDSL.g:13077:1: rule__XSwitchExpression__Group_2_0__0 : rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 ;
+    public final void rule__XSwitchExpression__Group_2_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13081:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
+            // InternalActionDSL.g:13082:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XSwitchExpression__Group_2_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0__0"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0__0__Impl"
+    // InternalActionDSL.g:13089:1: rule__XSwitchExpression__Group_2_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) ;
+    public final void rule__XSwitchExpression__Group_2_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13093:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
+            // InternalActionDSL.g:13094:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            {
+            // InternalActionDSL.g:13094:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalActionDSL.g:13095:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); 
+            }
+            // InternalActionDSL.g:13096:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalActionDSL.g:13096:3: rule__XSwitchExpression__Group_2_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0__0__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0__1"
+    // InternalActionDSL.g:13104:1: rule__XSwitchExpression__Group_2_0__1 : rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 ;
+    public final void rule__XSwitchExpression__Group_2_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13108:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
+            // InternalActionDSL.g:13109:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
+            {
+            pushFollow(FOLLOW_92);
+            rule__XSwitchExpression__Group_2_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0__1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0__1__Impl"
+    // InternalActionDSL.g:13116:1: rule__XSwitchExpression__Group_2_0__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) ;
+    public final void rule__XSwitchExpression__Group_2_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13120:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
+            // InternalActionDSL.g:13121:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            {
+            // InternalActionDSL.g:13121:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalActionDSL.g:13122:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); 
+            }
+            // InternalActionDSL.g:13123:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalActionDSL.g:13123:3: rule__XSwitchExpression__SwitchAssignment_2_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__SwitchAssignment_2_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0__1__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0__2"
+    // InternalActionDSL.g:13131:1: rule__XSwitchExpression__Group_2_0__2 : rule__XSwitchExpression__Group_2_0__2__Impl ;
+    public final void rule__XSwitchExpression__Group_2_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13135:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
+            // InternalActionDSL.g:13136:2: rule__XSwitchExpression__Group_2_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0__2"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0__2__Impl"
+    // InternalActionDSL.g:13142:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
+    public final void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13146:1: ( ( ')' ) )
+            // InternalActionDSL.g:13147:1: ( ')' )
+            {
+            // InternalActionDSL.g:13147:1: ( ')' )
+            // InternalActionDSL.g:13148:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0__2__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0"
+    // InternalActionDSL.g:13158:1: rule__XSwitchExpression__Group_2_0_0__0 : rule__XSwitchExpression__Group_2_0_0__0__Impl ;
+    public final void rule__XSwitchExpression__Group_2_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13162:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
+            // InternalActionDSL.g:13163:2: rule__XSwitchExpression__Group_2_0_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0_0__0"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0__Impl"
+    // InternalActionDSL.g:13169:1: rule__XSwitchExpression__Group_2_0_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) ;
+    public final void rule__XSwitchExpression__Group_2_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13173:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
+            // InternalActionDSL.g:13174:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            {
+            // InternalActionDSL.g:13174:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalActionDSL.g:13175:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); 
+            }
+            // InternalActionDSL.g:13176:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalActionDSL.g:13176:3: rule__XSwitchExpression__Group_2_0_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_0_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0"
+    // InternalActionDSL.g:13185:1: rule__XSwitchExpression__Group_2_0_0_0__0 : rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 ;
+    public final void rule__XSwitchExpression__Group_2_0_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13189:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
+            // InternalActionDSL.g:13190:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__XSwitchExpression__Group_2_0_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_0_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0_0_0__0"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0__Impl"
+    // InternalActionDSL.g:13197:1: rule__XSwitchExpression__Group_2_0_0_0__0__Impl : ( '(' ) ;
+    public final void rule__XSwitchExpression__Group_2_0_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13201:1: ( ( '(' ) )
+            // InternalActionDSL.g:13202:1: ( '(' )
+            {
+            // InternalActionDSL.g:13202:1: ( '(' )
+            // InternalActionDSL.g:13203:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1"
+    // InternalActionDSL.g:13212:1: rule__XSwitchExpression__Group_2_0_0_0__1 : rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 ;
+    public final void rule__XSwitchExpression__Group_2_0_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13216:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
+            // InternalActionDSL.g:13217:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
+            {
+            pushFollow(FOLLOW_99);
+            rule__XSwitchExpression__Group_2_0_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_0_0_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0_0_0__1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1__Impl"
+    // InternalActionDSL.g:13224:1: rule__XSwitchExpression__Group_2_0_0_0__1__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) ;
+    public final void rule__XSwitchExpression__Group_2_0_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13228:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
+            // InternalActionDSL.g:13229:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            {
+            // InternalActionDSL.g:13229:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalActionDSL.g:13230:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); 
+            }
+            // InternalActionDSL.g:13231:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalActionDSL.g:13231:3: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2"
+    // InternalActionDSL.g:13239:1: rule__XSwitchExpression__Group_2_0_0_0__2 : rule__XSwitchExpression__Group_2_0_0_0__2__Impl ;
+    public final void rule__XSwitchExpression__Group_2_0_0_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13243:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
+            // InternalActionDSL.g:13244:2: rule__XSwitchExpression__Group_2_0_0_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_0_0_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0_0_0__2"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2__Impl"
+    // InternalActionDSL.g:13250:1: rule__XSwitchExpression__Group_2_0_0_0__2__Impl : ( ':' ) ;
+    public final void rule__XSwitchExpression__Group_2_0_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13254:1: ( ( ':' ) )
+            // InternalActionDSL.g:13255:1: ( ':' )
+            {
+            // InternalActionDSL.g:13255:1: ( ':' )
+            // InternalActionDSL.g:13256:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
+            }
+            match(input,112,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_0_0_0__2__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1__0"
+    // InternalActionDSL.g:13266:1: rule__XSwitchExpression__Group_2_1__0 : rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 ;
+    public final void rule__XSwitchExpression__Group_2_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13270:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
+            // InternalActionDSL.g:13271:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
+            {
+            pushFollow(FOLLOW_96);
+            rule__XSwitchExpression__Group_2_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1__0"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1__0__Impl"
+    // InternalActionDSL.g:13278:1: rule__XSwitchExpression__Group_2_1__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) ;
+    public final void rule__XSwitchExpression__Group_2_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13282:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
+            // InternalActionDSL.g:13283:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            {
+            // InternalActionDSL.g:13283:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalActionDSL.g:13284:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); 
+            }
+            // InternalActionDSL.g:13285:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            int alt112=2;
+            alt112 = dfa112.predict(input);
+            switch (alt112) {
+                case 1 :
+                    // InternalActionDSL.g:13285:3: rule__XSwitchExpression__Group_2_1_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XSwitchExpression__Group_2_1_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1__0__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1__1"
+    // InternalActionDSL.g:13293:1: rule__XSwitchExpression__Group_2_1__1 : rule__XSwitchExpression__Group_2_1__1__Impl ;
+    public final void rule__XSwitchExpression__Group_2_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13297:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
+            // InternalActionDSL.g:13298:2: rule__XSwitchExpression__Group_2_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1__1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1__1__Impl"
+    // InternalActionDSL.g:13304:1: rule__XSwitchExpression__Group_2_1__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) ;
+    public final void rule__XSwitchExpression__Group_2_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13308:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
+            // InternalActionDSL.g:13309:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            {
+            // InternalActionDSL.g:13309:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalActionDSL.g:13310:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); 
+            }
+            // InternalActionDSL.g:13311:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalActionDSL.g:13311:3: rule__XSwitchExpression__SwitchAssignment_2_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__SwitchAssignment_2_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1__1__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0"
+    // InternalActionDSL.g:13320:1: rule__XSwitchExpression__Group_2_1_0__0 : rule__XSwitchExpression__Group_2_1_0__0__Impl ;
+    public final void rule__XSwitchExpression__Group_2_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13324:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
+            // InternalActionDSL.g:13325:2: rule__XSwitchExpression__Group_2_1_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1_0__0"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0__Impl"
+    // InternalActionDSL.g:13331:1: rule__XSwitchExpression__Group_2_1_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) ;
+    public final void rule__XSwitchExpression__Group_2_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13335:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
+            // InternalActionDSL.g:13336:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            {
+            // InternalActionDSL.g:13336:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalActionDSL.g:13337:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); 
+            }
+            // InternalActionDSL.g:13338:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalActionDSL.g:13338:3: rule__XSwitchExpression__Group_2_1_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_1_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0"
+    // InternalActionDSL.g:13347:1: rule__XSwitchExpression__Group_2_1_0_0__0 : rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 ;
+    public final void rule__XSwitchExpression__Group_2_1_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13351:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
+            // InternalActionDSL.g:13352:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
+            {
+            pushFollow(FOLLOW_99);
+            rule__XSwitchExpression__Group_2_1_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_1_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1_0_0__0"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0__Impl"
+    // InternalActionDSL.g:13359:1: rule__XSwitchExpression__Group_2_1_0_0__0__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) ;
+    public final void rule__XSwitchExpression__Group_2_1_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13363:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
+            // InternalActionDSL.g:13364:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            {
+            // InternalActionDSL.g:13364:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalActionDSL.g:13365:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); 
+            }
+            // InternalActionDSL.g:13366:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalActionDSL.g:13366:3: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1"
+    // InternalActionDSL.g:13374:1: rule__XSwitchExpression__Group_2_1_0_0__1 : rule__XSwitchExpression__Group_2_1_0_0__1__Impl ;
+    public final void rule__XSwitchExpression__Group_2_1_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13378:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
+            // InternalActionDSL.g:13379:2: rule__XSwitchExpression__Group_2_1_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_2_1_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1_0_0__1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1__Impl"
+    // InternalActionDSL.g:13385:1: rule__XSwitchExpression__Group_2_1_0_0__1__Impl : ( ':' ) ;
+    public final void rule__XSwitchExpression__Group_2_1_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13389:1: ( ( ':' ) )
+            // InternalActionDSL.g:13390:1: ( ':' )
+            {
+            // InternalActionDSL.g:13390:1: ( ':' )
+            // InternalActionDSL.g:13391:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
+            }
+            match(input,112,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_2_1_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_5__0"
+    // InternalActionDSL.g:13401:1: rule__XSwitchExpression__Group_5__0 : rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 ;
+    public final void rule__XSwitchExpression__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13405:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
+            // InternalActionDSL.g:13406:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
+            {
+            pushFollow(FOLLOW_99);
+            rule__XSwitchExpression__Group_5__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_5__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_5__0"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_5__0__Impl"
+    // InternalActionDSL.g:13413:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
+    public final void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13417:1: ( ( 'default' ) )
+            // InternalActionDSL.g:13418:1: ( 'default' )
+            {
+            // InternalActionDSL.g:13418:1: ( 'default' )
+            // InternalActionDSL.g:13419:2: 'default'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
+            }
+            match(input,113,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_5__1"
+    // InternalActionDSL.g:13428:1: rule__XSwitchExpression__Group_5__1 : rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 ;
+    public final void rule__XSwitchExpression__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13432:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
+            // InternalActionDSL.g:13433:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
+            {
+            pushFollow(FOLLOW_47);
+            rule__XSwitchExpression__Group_5__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_5__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_5__1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_5__1__Impl"
+    // InternalActionDSL.g:13440:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
+    public final void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13444:1: ( ( ':' ) )
+            // InternalActionDSL.g:13445:1: ( ':' )
+            {
+            // InternalActionDSL.g:13445:1: ( ':' )
+            // InternalActionDSL.g:13446:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
+            }
+            match(input,112,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_5__2"
+    // InternalActionDSL.g:13455:1: rule__XSwitchExpression__Group_5__2 : rule__XSwitchExpression__Group_5__2__Impl ;
+    public final void rule__XSwitchExpression__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13459:1: ( rule__XSwitchExpression__Group_5__2__Impl )
+            // InternalActionDSL.g:13460:2: rule__XSwitchExpression__Group_5__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group_5__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_5__2"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group_5__2__Impl"
+    // InternalActionDSL.g:13466:1: rule__XSwitchExpression__Group_5__2__Impl : ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) ;
+    public final void rule__XSwitchExpression__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13470:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
+            // InternalActionDSL.g:13471:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            {
+            // InternalActionDSL.g:13471:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalActionDSL.g:13472:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); 
+            }
+            // InternalActionDSL.g:13473:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalActionDSL.g:13473:3: rule__XSwitchExpression__DefaultAssignment_5_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__DefaultAssignment_5_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__XCasePart__Group__0"
+    // InternalActionDSL.g:13482:1: rule__XCasePart__Group__0 : rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 ;
+    public final void rule__XCasePart__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13486:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
+            // InternalActionDSL.g:13487:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
+            {
+            pushFollow(FOLLOW_100);
+            rule__XCasePart__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group__0"
+
+
+    // $ANTLR start "rule__XCasePart__Group__0__Impl"
+    // InternalActionDSL.g:13494:1: rule__XCasePart__Group__0__Impl : ( () ) ;
+    public final void rule__XCasePart__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13498:1: ( ( () ) )
+            // InternalActionDSL.g:13499:1: ( () )
+            {
+            // InternalActionDSL.g:13499:1: ( () )
+            // InternalActionDSL.g:13500:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); 
+            }
+            // InternalActionDSL.g:13501:2: ()
+            // InternalActionDSL.g:13501:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XCasePart__Group__1"
+    // InternalActionDSL.g:13509:1: rule__XCasePart__Group__1 : rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 ;
+    public final void rule__XCasePart__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13513:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
+            // InternalActionDSL.g:13514:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
+            {
+            pushFollow(FOLLOW_100);
+            rule__XCasePart__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group__1"
+
+
+    // $ANTLR start "rule__XCasePart__Group__1__Impl"
+    // InternalActionDSL.g:13521:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
+    public final void rule__XCasePart__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13525:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
+            // InternalActionDSL.g:13526:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            {
+            // InternalActionDSL.g:13526:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalActionDSL.g:13527:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); 
+            }
+            // InternalActionDSL.g:13528:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            int alt113=2;
+            int LA113_0 = input.LA(1);
+
+            if ( (LA113_0==RULE_ID||LA113_0==33||LA113_0==101) ) {
+                alt113=1;
+            }
+            switch (alt113) {
+                case 1 :
+                    // InternalActionDSL.g:13528:3: rule__XCasePart__TypeGuardAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XCasePart__TypeGuardAssignment_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XCasePart__Group__2"
+    // InternalActionDSL.g:13536:1: rule__XCasePart__Group__2 : rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 ;
+    public final void rule__XCasePart__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13540:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
+            // InternalActionDSL.g:13541:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
+            {
+            pushFollow(FOLLOW_100);
+            rule__XCasePart__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group__2"
+
+
+    // $ANTLR start "rule__XCasePart__Group__2__Impl"
+    // InternalActionDSL.g:13548:1: rule__XCasePart__Group__2__Impl : ( ( rule__XCasePart__Group_2__0 )? ) ;
+    public final void rule__XCasePart__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13552:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
+            // InternalActionDSL.g:13553:1: ( ( rule__XCasePart__Group_2__0 )? )
+            {
+            // InternalActionDSL.g:13553:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalActionDSL.g:13554:2: ( rule__XCasePart__Group_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup_2()); 
+            }
+            // InternalActionDSL.g:13555:2: ( rule__XCasePart__Group_2__0 )?
+            int alt114=2;
+            int LA114_0 = input.LA(1);
+
+            if ( (LA114_0==114) ) {
+                alt114=1;
+            }
+            switch (alt114) {
+                case 1 :
+                    // InternalActionDSL.g:13555:3: rule__XCasePart__Group_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XCasePart__Group_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XCasePart__Group__3"
+    // InternalActionDSL.g:13563:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
+    public final void rule__XCasePart__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13567:1: ( rule__XCasePart__Group__3__Impl )
+            // InternalActionDSL.g:13568:2: rule__XCasePart__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group__3"
+
+
+    // $ANTLR start "rule__XCasePart__Group__3__Impl"
+    // InternalActionDSL.g:13574:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
+    public final void rule__XCasePart__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13578:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
+            // InternalActionDSL.g:13579:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            {
+            // InternalActionDSL.g:13579:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalActionDSL.g:13580:2: ( rule__XCasePart__Alternatives_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getAlternatives_3()); 
+            }
+            // InternalActionDSL.g:13581:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalActionDSL.g:13581:3: rule__XCasePart__Alternatives_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Alternatives_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getAlternatives_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XCasePart__Group_2__0"
+    // InternalActionDSL.g:13590:1: rule__XCasePart__Group_2__0 : rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 ;
+    public final void rule__XCasePart__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13594:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
+            // InternalActionDSL.g:13595:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XCasePart__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group_2__0"
+
+
+    // $ANTLR start "rule__XCasePart__Group_2__0__Impl"
+    // InternalActionDSL.g:13602:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
+    public final void rule__XCasePart__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13606:1: ( ( 'case' ) )
+            // InternalActionDSL.g:13607:1: ( 'case' )
+            {
+            // InternalActionDSL.g:13607:1: ( 'case' )
+            // InternalActionDSL.g:13608:2: 'case'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
+            }
+            match(input,114,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__XCasePart__Group_2__1"
+    // InternalActionDSL.g:13617:1: rule__XCasePart__Group_2__1 : rule__XCasePart__Group_2__1__Impl ;
+    public final void rule__XCasePart__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13621:1: ( rule__XCasePart__Group_2__1__Impl )
+            // InternalActionDSL.g:13622:2: rule__XCasePart__Group_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Group_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group_2__1"
+
+
+    // $ANTLR start "rule__XCasePart__Group_2__1__Impl"
+    // InternalActionDSL.g:13628:1: rule__XCasePart__Group_2__1__Impl : ( ( rule__XCasePart__CaseAssignment_2_1 ) ) ;
+    public final void rule__XCasePart__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13632:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
+            // InternalActionDSL.g:13633:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            {
+            // InternalActionDSL.g:13633:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalActionDSL.g:13634:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); 
+            }
+            // InternalActionDSL.g:13635:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalActionDSL.g:13635:3: rule__XCasePart__CaseAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__CaseAssignment_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__XCasePart__Group_3_0__0"
+    // InternalActionDSL.g:13644:1: rule__XCasePart__Group_3_0__0 : rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 ;
+    public final void rule__XCasePart__Group_3_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13648:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
+            // InternalActionDSL.g:13649:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XCasePart__Group_3_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Group_3_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group_3_0__0"
+
+
+    // $ANTLR start "rule__XCasePart__Group_3_0__0__Impl"
+    // InternalActionDSL.g:13656:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
+    public final void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13660:1: ( ( ':' ) )
+            // InternalActionDSL.g:13661:1: ( ':' )
+            {
+            // InternalActionDSL.g:13661:1: ( ':' )
+            // InternalActionDSL.g:13662:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
+            }
+            match(input,112,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group_3_0__0__Impl"
+
+
+    // $ANTLR start "rule__XCasePart__Group_3_0__1"
+    // InternalActionDSL.g:13671:1: rule__XCasePart__Group_3_0__1 : rule__XCasePart__Group_3_0__1__Impl ;
+    public final void rule__XCasePart__Group_3_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13675:1: ( rule__XCasePart__Group_3_0__1__Impl )
+            // InternalActionDSL.g:13676:2: rule__XCasePart__Group_3_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__Group_3_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group_3_0__1"
+
+
+    // $ANTLR start "rule__XCasePart__Group_3_0__1__Impl"
+    // InternalActionDSL.g:13682:1: rule__XCasePart__Group_3_0__1__Impl : ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) ;
+    public final void rule__XCasePart__Group_3_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13686:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
+            // InternalActionDSL.g:13687:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            {
+            // InternalActionDSL.g:13687:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalActionDSL.g:13688:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); 
+            }
+            // InternalActionDSL.g:13689:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalActionDSL.g:13689:3: rule__XCasePart__ThenAssignment_3_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCasePart__ThenAssignment_3_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__Group_3_0__1__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group__0"
+    // InternalActionDSL.g:13698:1: rule__XForLoopExpression__Group__0 : rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 ;
+    public final void rule__XForLoopExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13702:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
+            // InternalActionDSL.g:13703:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XForLoopExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group__0"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group__0__Impl"
+    // InternalActionDSL.g:13710:1: rule__XForLoopExpression__Group__0__Impl : ( ( rule__XForLoopExpression__Group_0__0 ) ) ;
+    public final void rule__XForLoopExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13714:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
+            // InternalActionDSL.g:13715:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            {
+            // InternalActionDSL.g:13715:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalActionDSL.g:13716:2: ( rule__XForLoopExpression__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); 
+            }
+            // InternalActionDSL.g:13717:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalActionDSL.g:13717:3: rule__XForLoopExpression__Group_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group__1"
+    // InternalActionDSL.g:13725:1: rule__XForLoopExpression__Group__1 : rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 ;
+    public final void rule__XForLoopExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13729:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
+            // InternalActionDSL.g:13730:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
+            {
+            pushFollow(FOLLOW_92);
+            rule__XForLoopExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group__1"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group__1__Impl"
+    // InternalActionDSL.g:13737:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
+    public final void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13741:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
+            // InternalActionDSL.g:13742:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            {
+            // InternalActionDSL.g:13742:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalActionDSL.g:13743:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); 
+            }
+            // InternalActionDSL.g:13744:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalActionDSL.g:13744:3: rule__XForLoopExpression__ForExpressionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__ForExpressionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group__2"
+    // InternalActionDSL.g:13752:1: rule__XForLoopExpression__Group__2 : rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 ;
+    public final void rule__XForLoopExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13756:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
+            // InternalActionDSL.g:13757:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
+            {
+            pushFollow(FOLLOW_47);
+            rule__XForLoopExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group__2"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group__2__Impl"
+    // InternalActionDSL.g:13764:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13768:1: ( ( ')' ) )
+            // InternalActionDSL.g:13769:1: ( ')' )
+            {
+            // InternalActionDSL.g:13769:1: ( ')' )
+            // InternalActionDSL.g:13770:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group__3"
+    // InternalActionDSL.g:13779:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
+    public final void rule__XForLoopExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13783:1: ( rule__XForLoopExpression__Group__3__Impl )
+            // InternalActionDSL.g:13784:2: rule__XForLoopExpression__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group__3"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group__3__Impl"
+    // InternalActionDSL.g:13790:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
+    public final void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13794:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
+            // InternalActionDSL.g:13795:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            {
+            // InternalActionDSL.g:13795:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalActionDSL.g:13796:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); 
+            }
+            // InternalActionDSL.g:13797:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalActionDSL.g:13797:3: rule__XForLoopExpression__EachExpressionAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__EachExpressionAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0__0"
+    // InternalActionDSL.g:13806:1: rule__XForLoopExpression__Group_0__0 : rule__XForLoopExpression__Group_0__0__Impl ;
+    public final void rule__XForLoopExpression__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13810:1: ( rule__XForLoopExpression__Group_0__0__Impl )
+            // InternalActionDSL.g:13811:2: rule__XForLoopExpression__Group_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0__0"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0__0__Impl"
+    // InternalActionDSL.g:13817:1: rule__XForLoopExpression__Group_0__0__Impl : ( ( rule__XForLoopExpression__Group_0_0__0 ) ) ;
+    public final void rule__XForLoopExpression__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13821:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
+            // InternalActionDSL.g:13822:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            {
+            // InternalActionDSL.g:13822:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalActionDSL.g:13823:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); 
+            }
+            // InternalActionDSL.g:13824:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalActionDSL.g:13824:3: rule__XForLoopExpression__Group_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__0"
+    // InternalActionDSL.g:13833:1: rule__XForLoopExpression__Group_0_0__0 : rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 ;
+    public final void rule__XForLoopExpression__Group_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13837:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
+            // InternalActionDSL.g:13838:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
+            {
+            pushFollow(FOLLOW_101);
+            rule__XForLoopExpression__Group_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__0"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__0__Impl"
+    // InternalActionDSL.g:13845:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13849:1: ( ( () ) )
+            // InternalActionDSL.g:13850:1: ( () )
+            {
+            // InternalActionDSL.g:13850:1: ( () )
+            // InternalActionDSL.g:13851:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); 
+            }
+            // InternalActionDSL.g:13852:2: ()
+            // InternalActionDSL.g:13852:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__1"
+    // InternalActionDSL.g:13860:1: rule__XForLoopExpression__Group_0_0__1 : rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 ;
+    public final void rule__XForLoopExpression__Group_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13864:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
+            // InternalActionDSL.g:13865:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
+            {
+            pushFollow(FOLLOW_43);
+            rule__XForLoopExpression__Group_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group_0_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__1"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__1__Impl"
+    // InternalActionDSL.g:13872:1: rule__XForLoopExpression__Group_0_0__1__Impl : ( 'for' ) ;
+    public final void rule__XForLoopExpression__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13876:1: ( ( 'for' ) )
+            // InternalActionDSL.g:13877:1: ( 'for' )
+            {
+            // InternalActionDSL.g:13877:1: ( 'for' )
+            // InternalActionDSL.g:13878:2: 'for'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
+            }
+            match(input,115,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__2"
+    // InternalActionDSL.g:13887:1: rule__XForLoopExpression__Group_0_0__2 : rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 ;
+    public final void rule__XForLoopExpression__Group_0_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13891:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
+            // InternalActionDSL.g:13892:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
+            {
+            pushFollow(FOLLOW_64);
+            rule__XForLoopExpression__Group_0_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group_0_0__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__2"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__2__Impl"
+    // InternalActionDSL.g:13899:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
+    public final void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13903:1: ( ( '(' ) )
+            // InternalActionDSL.g:13904:1: ( '(' )
+            {
+            // InternalActionDSL.g:13904:1: ( '(' )
+            // InternalActionDSL.g:13905:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__2__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__3"
+    // InternalActionDSL.g:13914:1: rule__XForLoopExpression__Group_0_0__3 : rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 ;
+    public final void rule__XForLoopExpression__Group_0_0__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13918:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
+            // InternalActionDSL.g:13919:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
+            {
+            pushFollow(FOLLOW_99);
+            rule__XForLoopExpression__Group_0_0__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group_0_0__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__3"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__3__Impl"
+    // InternalActionDSL.g:13926:1: rule__XForLoopExpression__Group_0_0__3__Impl : ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) ;
+    public final void rule__XForLoopExpression__Group_0_0__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13930:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
+            // InternalActionDSL.g:13931:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            {
+            // InternalActionDSL.g:13931:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalActionDSL.g:13932:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); 
+            }
+            // InternalActionDSL.g:13933:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalActionDSL.g:13933:3: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__DeclaredParamAssignment_0_0_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__3__Impl"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__4"
+    // InternalActionDSL.g:13941:1: rule__XForLoopExpression__Group_0_0__4 : rule__XForLoopExpression__Group_0_0__4__Impl ;
+    public final void rule__XForLoopExpression__Group_0_0__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13945:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
+            // InternalActionDSL.g:13946:2: rule__XForLoopExpression__Group_0_0__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XForLoopExpression__Group_0_0__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__4"
+
+
+    // $ANTLR start "rule__XForLoopExpression__Group_0_0__4__Impl"
+    // InternalActionDSL.g:13952:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
+    public final void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13956:1: ( ( ':' ) )
+            // InternalActionDSL.g:13957:1: ( ':' )
+            {
+            // InternalActionDSL.g:13957:1: ( ':' )
+            // InternalActionDSL.g:13958:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
+            }
+            match(input,112,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__Group_0_0__4__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__0"
+    // InternalActionDSL.g:13968:1: rule__XBasicForLoopExpression__Group__0 : rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 ;
+    public final void rule__XBasicForLoopExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13972:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
+            // InternalActionDSL.g:13973:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
+            {
+            pushFollow(FOLLOW_101);
+            rule__XBasicForLoopExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__0"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__0__Impl"
+    // InternalActionDSL.g:13980:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13984:1: ( ( () ) )
+            // InternalActionDSL.g:13985:1: ( () )
+            {
+            // InternalActionDSL.g:13985:1: ( () )
+            // InternalActionDSL.g:13986:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:13987:2: ()
+            // InternalActionDSL.g:13987:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__1"
+    // InternalActionDSL.g:13995:1: rule__XBasicForLoopExpression__Group__1 : rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 ;
+    public final void rule__XBasicForLoopExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:13999:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
+            // InternalActionDSL.g:14000:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
+            {
+            pushFollow(FOLLOW_43);
+            rule__XBasicForLoopExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__1"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__1__Impl"
+    // InternalActionDSL.g:14007:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
+    public final void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14011:1: ( ( 'for' ) )
+            // InternalActionDSL.g:14012:1: ( 'for' )
+            {
+            // InternalActionDSL.g:14012:1: ( 'for' )
+            // InternalActionDSL.g:14013:2: 'for'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
+            }
+            match(input,115,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__2"
+    // InternalActionDSL.g:14022:1: rule__XBasicForLoopExpression__Group__2 : rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 ;
+    public final void rule__XBasicForLoopExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14026:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
+            // InternalActionDSL.g:14027:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
+            {
+            pushFollow(FOLLOW_102);
+            rule__XBasicForLoopExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__2"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__2__Impl"
+    // InternalActionDSL.g:14034:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14038:1: ( ( '(' ) )
+            // InternalActionDSL.g:14039:1: ( '(' )
+            {
+            // InternalActionDSL.g:14039:1: ( '(' )
+            // InternalActionDSL.g:14040:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__3"
+    // InternalActionDSL.g:14049:1: rule__XBasicForLoopExpression__Group__3 : rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 ;
+    public final void rule__XBasicForLoopExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14053:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
+            // InternalActionDSL.g:14054:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
+            {
+            pushFollow(FOLLOW_102);
+            rule__XBasicForLoopExpression__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__3"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__3__Impl"
+    // InternalActionDSL.g:14061:1: rule__XBasicForLoopExpression__Group__3__Impl : ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) ;
+    public final void rule__XBasicForLoopExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14065:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
+            // InternalActionDSL.g:14066:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:14066:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalActionDSL.g:14067:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:14068:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            int alt115=2;
+            int LA115_0 = input.LA(1);
+
+            if ( ((LA115_0>=RULE_ID && LA115_0<=RULE_DECIMAL)||LA115_0==29||(LA115_0>=36 && LA115_0<=37)||LA115_0==42||(LA115_0>=46 && LA115_0<=52)||LA115_0==79||LA115_0==101||(LA115_0>=105 && LA115_0<=106)||LA115_0==109||LA115_0==111||(LA115_0>=115 && LA115_0<=123)||LA115_0==125||(LA115_0>=139 && LA115_0<=140)) ) {
+                alt115=1;
+            }
+            switch (alt115) {
+                case 1 :
+                    // InternalActionDSL.g:14068:3: rule__XBasicForLoopExpression__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XBasicForLoopExpression__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__4"
+    // InternalActionDSL.g:14076:1: rule__XBasicForLoopExpression__Group__4 : rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 ;
+    public final void rule__XBasicForLoopExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14080:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
+            // InternalActionDSL.g:14081:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
+            {
+            pushFollow(FOLLOW_103);
+            rule__XBasicForLoopExpression__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__4"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__4__Impl"
+    // InternalActionDSL.g:14088:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
+    public final void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14092:1: ( ( ';' ) )
+            // InternalActionDSL.g:14093:1: ( ';' )
+            {
+            // InternalActionDSL.g:14093:1: ( ';' )
+            // InternalActionDSL.g:14094:2: ';'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
+            }
+            match(input,99,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__5"
+    // InternalActionDSL.g:14103:1: rule__XBasicForLoopExpression__Group__5 : rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 ;
+    public final void rule__XBasicForLoopExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14107:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
+            // InternalActionDSL.g:14108:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
+            {
+            pushFollow(FOLLOW_103);
+            rule__XBasicForLoopExpression__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__5"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__5__Impl"
+    // InternalActionDSL.g:14115:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
+    public final void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14119:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
+            // InternalActionDSL.g:14120:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            {
+            // InternalActionDSL.g:14120:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalActionDSL.g:14121:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); 
+            }
+            // InternalActionDSL.g:14122:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            int alt116=2;
+            int LA116_0 = input.LA(1);
+
+            if ( ((LA116_0>=RULE_ID && LA116_0<=RULE_DECIMAL)||LA116_0==29||(LA116_0>=36 && LA116_0<=37)||LA116_0==42||(LA116_0>=47 && LA116_0<=52)||LA116_0==79||LA116_0==101||(LA116_0>=105 && LA116_0<=106)||LA116_0==109||LA116_0==111||(LA116_0>=115 && LA116_0<=123)||LA116_0==125||LA116_0==140) ) {
+                alt116=1;
+            }
+            switch (alt116) {
+                case 1 :
+                    // InternalActionDSL.g:14122:3: rule__XBasicForLoopExpression__ExpressionAssignment_5
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XBasicForLoopExpression__ExpressionAssignment_5();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__5__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__6"
+    // InternalActionDSL.g:14130:1: rule__XBasicForLoopExpression__Group__6 : rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 ;
+    public final void rule__XBasicForLoopExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14134:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
+            // InternalActionDSL.g:14135:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
+            {
+            pushFollow(FOLLOW_44);
+            rule__XBasicForLoopExpression__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__6"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__6__Impl"
+    // InternalActionDSL.g:14142:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
+    public final void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14146:1: ( ( ';' ) )
+            // InternalActionDSL.g:14147:1: ( ';' )
+            {
+            // InternalActionDSL.g:14147:1: ( ';' )
+            // InternalActionDSL.g:14148:2: ';'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
+            }
+            match(input,99,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__6__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__7"
+    // InternalActionDSL.g:14157:1: rule__XBasicForLoopExpression__Group__7 : rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 ;
+    public final void rule__XBasicForLoopExpression__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14161:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
+            // InternalActionDSL.g:14162:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
+            {
+            pushFollow(FOLLOW_44);
+            rule__XBasicForLoopExpression__Group__7__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__8();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__7"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__7__Impl"
+    // InternalActionDSL.g:14169:1: rule__XBasicForLoopExpression__Group__7__Impl : ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) ;
+    public final void rule__XBasicForLoopExpression__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14173:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
+            // InternalActionDSL.g:14174:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            {
+            // InternalActionDSL.g:14174:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalActionDSL.g:14175:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); 
+            }
+            // InternalActionDSL.g:14176:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            int alt117=2;
+            int LA117_0 = input.LA(1);
+
+            if ( ((LA117_0>=RULE_ID && LA117_0<=RULE_DECIMAL)||LA117_0==29||(LA117_0>=36 && LA117_0<=37)||LA117_0==42||(LA117_0>=47 && LA117_0<=52)||LA117_0==79||LA117_0==101||(LA117_0>=105 && LA117_0<=106)||LA117_0==109||LA117_0==111||(LA117_0>=115 && LA117_0<=123)||LA117_0==125||LA117_0==140) ) {
+                alt117=1;
+            }
+            switch (alt117) {
+                case 1 :
+                    // InternalActionDSL.g:14176:3: rule__XBasicForLoopExpression__Group_7__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XBasicForLoopExpression__Group_7__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__7__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__8"
+    // InternalActionDSL.g:14184:1: rule__XBasicForLoopExpression__Group__8 : rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 ;
+    public final void rule__XBasicForLoopExpression__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14188:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
+            // InternalActionDSL.g:14189:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
+            {
+            pushFollow(FOLLOW_47);
+            rule__XBasicForLoopExpression__Group__8__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__9();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__8"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__8__Impl"
+    // InternalActionDSL.g:14196:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
+    public final void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14200:1: ( ( ')' ) )
+            // InternalActionDSL.g:14201:1: ( ')' )
+            {
+            // InternalActionDSL.g:14201:1: ( ')' )
+            // InternalActionDSL.g:14202:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__8__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__9"
+    // InternalActionDSL.g:14211:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
+    public final void rule__XBasicForLoopExpression__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14215:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
+            // InternalActionDSL.g:14216:2: rule__XBasicForLoopExpression__Group__9__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group__9__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__9"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group__9__Impl"
+    // InternalActionDSL.g:14222:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
+    public final void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14226:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
+            // InternalActionDSL.g:14227:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            {
+            // InternalActionDSL.g:14227:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalActionDSL.g:14228:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); 
+            }
+            // InternalActionDSL.g:14229:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalActionDSL.g:14229:3: rule__XBasicForLoopExpression__EachExpressionAssignment_9
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__EachExpressionAssignment_9();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group__9__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0"
+    // InternalActionDSL.g:14238:1: rule__XBasicForLoopExpression__Group_3__0 : rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 ;
+    public final void rule__XBasicForLoopExpression__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14242:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
+            // InternalActionDSL.g:14243:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XBasicForLoopExpression__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_3__0"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0__Impl"
+    // InternalActionDSL.g:14250:1: rule__XBasicForLoopExpression__Group_3__0__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) ;
+    public final void rule__XBasicForLoopExpression__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14254:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
+            // InternalActionDSL.g:14255:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            {
+            // InternalActionDSL.g:14255:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalActionDSL.g:14256:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); 
+            }
+            // InternalActionDSL.g:14257:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalActionDSL.g:14257:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1"
+    // InternalActionDSL.g:14265:1: rule__XBasicForLoopExpression__Group_3__1 : rule__XBasicForLoopExpression__Group_3__1__Impl ;
+    public final void rule__XBasicForLoopExpression__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14269:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
+            // InternalActionDSL.g:14270:2: rule__XBasicForLoopExpression__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_3__1"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1__Impl"
+    // InternalActionDSL.g:14276:1: rule__XBasicForLoopExpression__Group_3__1__Impl : ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) ;
+    public final void rule__XBasicForLoopExpression__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14280:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
+            // InternalActionDSL.g:14281:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            {
+            // InternalActionDSL.g:14281:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalActionDSL.g:14282:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); 
+            }
+            // InternalActionDSL.g:14283:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            loop118:
+            do {
+                int alt118=2;
+                int LA118_0 = input.LA(1);
+
+                if ( (LA118_0==103) ) {
+                    alt118=1;
+                }
+
+
+                switch (alt118) {
+            	case 1 :
+            	    // InternalActionDSL.g:14283:3: rule__XBasicForLoopExpression__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XBasicForLoopExpression__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop118;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0"
+    // InternalActionDSL.g:14292:1: rule__XBasicForLoopExpression__Group_3_1__0 : rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 ;
+    public final void rule__XBasicForLoopExpression__Group_3_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14296:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
+            // InternalActionDSL.g:14297:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
+            {
+            pushFollow(FOLLOW_104);
+            rule__XBasicForLoopExpression__Group_3_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group_3_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_3_1__0"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0__Impl"
+    // InternalActionDSL.g:14304:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14308:1: ( ( ',' ) )
+            // InternalActionDSL.g:14309:1: ( ',' )
+            {
+            // InternalActionDSL.g:14309:1: ( ',' )
+            // InternalActionDSL.g:14310:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_3_1__0__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1"
+    // InternalActionDSL.g:14319:1: rule__XBasicForLoopExpression__Group_3_1__1 : rule__XBasicForLoopExpression__Group_3_1__1__Impl ;
+    public final void rule__XBasicForLoopExpression__Group_3_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14323:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
+            // InternalActionDSL.g:14324:2: rule__XBasicForLoopExpression__Group_3_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group_3_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_3_1__1"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1__Impl"
+    // InternalActionDSL.g:14330:1: rule__XBasicForLoopExpression__Group_3_1__1__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) ;
+    public final void rule__XBasicForLoopExpression__Group_3_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14334:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
+            // InternalActionDSL.g:14335:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            {
+            // InternalActionDSL.g:14335:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalActionDSL.g:14336:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); 
+            }
+            // InternalActionDSL.g:14337:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalActionDSL.g:14337:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_3_1__1__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0"
+    // InternalActionDSL.g:14346:1: rule__XBasicForLoopExpression__Group_7__0 : rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 ;
+    public final void rule__XBasicForLoopExpression__Group_7__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14350:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
+            // InternalActionDSL.g:14351:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XBasicForLoopExpression__Group_7__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group_7__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_7__0"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0__Impl"
+    // InternalActionDSL.g:14358:1: rule__XBasicForLoopExpression__Group_7__0__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) ;
+    public final void rule__XBasicForLoopExpression__Group_7__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14362:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
+            // InternalActionDSL.g:14363:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            {
+            // InternalActionDSL.g:14363:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalActionDSL.g:14364:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); 
+            }
+            // InternalActionDSL.g:14365:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalActionDSL.g:14365:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_7__0__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1"
+    // InternalActionDSL.g:14373:1: rule__XBasicForLoopExpression__Group_7__1 : rule__XBasicForLoopExpression__Group_7__1__Impl ;
+    public final void rule__XBasicForLoopExpression__Group_7__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14377:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
+            // InternalActionDSL.g:14378:2: rule__XBasicForLoopExpression__Group_7__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group_7__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_7__1"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1__Impl"
+    // InternalActionDSL.g:14384:1: rule__XBasicForLoopExpression__Group_7__1__Impl : ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) ;
+    public final void rule__XBasicForLoopExpression__Group_7__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14388:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
+            // InternalActionDSL.g:14389:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            {
+            // InternalActionDSL.g:14389:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalActionDSL.g:14390:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); 
+            }
+            // InternalActionDSL.g:14391:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            loop119:
+            do {
+                int alt119=2;
+                int LA119_0 = input.LA(1);
+
+                if ( (LA119_0==103) ) {
+                    alt119=1;
+                }
+
+
+                switch (alt119) {
+            	case 1 :
+            	    // InternalActionDSL.g:14391:3: rule__XBasicForLoopExpression__Group_7_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XBasicForLoopExpression__Group_7_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop119;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_7__1__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0"
+    // InternalActionDSL.g:14400:1: rule__XBasicForLoopExpression__Group_7_1__0 : rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 ;
+    public final void rule__XBasicForLoopExpression__Group_7_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14404:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
+            // InternalActionDSL.g:14405:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XBasicForLoopExpression__Group_7_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group_7_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_7_1__0"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0__Impl"
+    // InternalActionDSL.g:14412:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
+    public final void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14416:1: ( ( ',' ) )
+            // InternalActionDSL.g:14417:1: ( ',' )
+            {
+            // InternalActionDSL.g:14417:1: ( ',' )
+            // InternalActionDSL.g:14418:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_7_1__0__Impl"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1"
+    // InternalActionDSL.g:14427:1: rule__XBasicForLoopExpression__Group_7_1__1 : rule__XBasicForLoopExpression__Group_7_1__1__Impl ;
+    public final void rule__XBasicForLoopExpression__Group_7_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14431:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
+            // InternalActionDSL.g:14432:2: rule__XBasicForLoopExpression__Group_7_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__Group_7_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_7_1__1"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1__Impl"
+    // InternalActionDSL.g:14438:1: rule__XBasicForLoopExpression__Group_7_1__1__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) ;
+    public final void rule__XBasicForLoopExpression__Group_7_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14442:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
+            // InternalActionDSL.g:14443:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            {
+            // InternalActionDSL.g:14443:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalActionDSL.g:14444:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); 
+            }
+            // InternalActionDSL.g:14445:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalActionDSL.g:14445:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__Group_7_1__1__Impl"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__0"
+    // InternalActionDSL.g:14454:1: rule__XWhileExpression__Group__0 : rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 ;
+    public final void rule__XWhileExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14458:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
+            // InternalActionDSL.g:14459:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
+            {
+            pushFollow(FOLLOW_105);
+            rule__XWhileExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XWhileExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__0"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__0__Impl"
+    // InternalActionDSL.g:14466:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XWhileExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14470:1: ( ( () ) )
+            // InternalActionDSL.g:14471:1: ( () )
+            {
+            // InternalActionDSL.g:14471:1: ( () )
+            // InternalActionDSL.g:14472:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:14473:2: ()
+            // InternalActionDSL.g:14473:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__1"
+    // InternalActionDSL.g:14481:1: rule__XWhileExpression__Group__1 : rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 ;
+    public final void rule__XWhileExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14485:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
+            // InternalActionDSL.g:14486:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
+            {
+            pushFollow(FOLLOW_43);
+            rule__XWhileExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XWhileExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__1"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__1__Impl"
+    // InternalActionDSL.g:14493:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
+    public final void rule__XWhileExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14497:1: ( ( 'while' ) )
+            // InternalActionDSL.g:14498:1: ( 'while' )
+            {
+            // InternalActionDSL.g:14498:1: ( 'while' )
+            // InternalActionDSL.g:14499:2: 'while'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
+            }
+            match(input,116,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__2"
+    // InternalActionDSL.g:14508:1: rule__XWhileExpression__Group__2 : rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 ;
+    public final void rule__XWhileExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14512:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
+            // InternalActionDSL.g:14513:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
+            {
+            pushFollow(FOLLOW_47);
+            rule__XWhileExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XWhileExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__2"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__2__Impl"
+    // InternalActionDSL.g:14520:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XWhileExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14524:1: ( ( '(' ) )
+            // InternalActionDSL.g:14525:1: ( '(' )
+            {
+            // InternalActionDSL.g:14525:1: ( '(' )
+            // InternalActionDSL.g:14526:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__3"
+    // InternalActionDSL.g:14535:1: rule__XWhileExpression__Group__3 : rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 ;
+    public final void rule__XWhileExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14539:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
+            // InternalActionDSL.g:14540:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
+            {
+            pushFollow(FOLLOW_92);
+            rule__XWhileExpression__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XWhileExpression__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__3"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__3__Impl"
+    // InternalActionDSL.g:14547:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
+    public final void rule__XWhileExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14551:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
+            // InternalActionDSL.g:14552:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            {
+            // InternalActionDSL.g:14552:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalActionDSL.g:14553:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); 
+            }
+            // InternalActionDSL.g:14554:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalActionDSL.g:14554:3: rule__XWhileExpression__PredicateAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XWhileExpression__PredicateAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__4"
+    // InternalActionDSL.g:14562:1: rule__XWhileExpression__Group__4 : rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 ;
+    public final void rule__XWhileExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14566:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
+            // InternalActionDSL.g:14567:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
+            {
+            pushFollow(FOLLOW_47);
+            rule__XWhileExpression__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XWhileExpression__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__4"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__4__Impl"
+    // InternalActionDSL.g:14574:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
+    public final void rule__XWhileExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14578:1: ( ( ')' ) )
+            // InternalActionDSL.g:14579:1: ( ')' )
+            {
+            // InternalActionDSL.g:14579:1: ( ')' )
+            // InternalActionDSL.g:14580:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__5"
+    // InternalActionDSL.g:14589:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
+    public final void rule__XWhileExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14593:1: ( rule__XWhileExpression__Group__5__Impl )
+            // InternalActionDSL.g:14594:2: rule__XWhileExpression__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XWhileExpression__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__5"
+
+
+    // $ANTLR start "rule__XWhileExpression__Group__5__Impl"
+    // InternalActionDSL.g:14600:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
+    public final void rule__XWhileExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14604:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
+            // InternalActionDSL.g:14605:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            {
+            // InternalActionDSL.g:14605:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalActionDSL.g:14606:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); 
+            }
+            // InternalActionDSL.g:14607:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalActionDSL.g:14607:3: rule__XWhileExpression__BodyAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__XWhileExpression__BodyAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__Group__5__Impl"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__0"
+    // InternalActionDSL.g:14616:1: rule__XDoWhileExpression__Group__0 : rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 ;
+    public final void rule__XDoWhileExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14620:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
+            // InternalActionDSL.g:14621:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
+            {
+            pushFollow(FOLLOW_106);
+            rule__XDoWhileExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__0"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__0__Impl"
+    // InternalActionDSL.g:14628:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14632:1: ( ( () ) )
+            // InternalActionDSL.g:14633:1: ( () )
+            {
+            // InternalActionDSL.g:14633:1: ( () )
+            // InternalActionDSL.g:14634:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:14635:2: ()
+            // InternalActionDSL.g:14635:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__1"
+    // InternalActionDSL.g:14643:1: rule__XDoWhileExpression__Group__1 : rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 ;
+    public final void rule__XDoWhileExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14647:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
+            // InternalActionDSL.g:14648:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
+            {
+            pushFollow(FOLLOW_47);
+            rule__XDoWhileExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__1"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__1__Impl"
+    // InternalActionDSL.g:14655:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
+    public final void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14659:1: ( ( 'do' ) )
+            // InternalActionDSL.g:14660:1: ( 'do' )
+            {
+            // InternalActionDSL.g:14660:1: ( 'do' )
+            // InternalActionDSL.g:14661:2: 'do'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
+            }
+            match(input,117,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__2"
+    // InternalActionDSL.g:14670:1: rule__XDoWhileExpression__Group__2 : rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 ;
+    public final void rule__XDoWhileExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14674:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
+            // InternalActionDSL.g:14675:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
+            {
+            pushFollow(FOLLOW_105);
+            rule__XDoWhileExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__2"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__2__Impl"
+    // InternalActionDSL.g:14682:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
+    public final void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14686:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
+            // InternalActionDSL.g:14687:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            {
+            // InternalActionDSL.g:14687:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalActionDSL.g:14688:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); 
+            }
+            // InternalActionDSL.g:14689:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalActionDSL.g:14689:3: rule__XDoWhileExpression__BodyAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__BodyAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__3"
+    // InternalActionDSL.g:14697:1: rule__XDoWhileExpression__Group__3 : rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 ;
+    public final void rule__XDoWhileExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14701:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
+            // InternalActionDSL.g:14702:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
+            {
+            pushFollow(FOLLOW_43);
+            rule__XDoWhileExpression__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__3"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__3__Impl"
+    // InternalActionDSL.g:14709:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
+    public final void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14713:1: ( ( 'while' ) )
+            // InternalActionDSL.g:14714:1: ( 'while' )
+            {
+            // InternalActionDSL.g:14714:1: ( 'while' )
+            // InternalActionDSL.g:14715:2: 'while'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
+            }
+            match(input,116,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__4"
+    // InternalActionDSL.g:14724:1: rule__XDoWhileExpression__Group__4 : rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 ;
+    public final void rule__XDoWhileExpression__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14728:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
+            // InternalActionDSL.g:14729:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
+            {
+            pushFollow(FOLLOW_47);
+            rule__XDoWhileExpression__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__4"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__4__Impl"
+    // InternalActionDSL.g:14736:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
+    public final void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14740:1: ( ( '(' ) )
+            // InternalActionDSL.g:14741:1: ( '(' )
+            {
+            // InternalActionDSL.g:14741:1: ( '(' )
+            // InternalActionDSL.g:14742:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__5"
+    // InternalActionDSL.g:14751:1: rule__XDoWhileExpression__Group__5 : rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 ;
+    public final void rule__XDoWhileExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14755:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
+            // InternalActionDSL.g:14756:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
+            {
+            pushFollow(FOLLOW_92);
+            rule__XDoWhileExpression__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__5"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__5__Impl"
+    // InternalActionDSL.g:14763:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
+    public final void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14767:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
+            // InternalActionDSL.g:14768:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            {
+            // InternalActionDSL.g:14768:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalActionDSL.g:14769:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); 
+            }
+            // InternalActionDSL.g:14770:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalActionDSL.g:14770:3: rule__XDoWhileExpression__PredicateAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__PredicateAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__5__Impl"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__6"
+    // InternalActionDSL.g:14778:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
+    public final void rule__XDoWhileExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14782:1: ( rule__XDoWhileExpression__Group__6__Impl )
+            // InternalActionDSL.g:14783:2: rule__XDoWhileExpression__Group__6__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XDoWhileExpression__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__6"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__Group__6__Impl"
+    // InternalActionDSL.g:14789:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
+    public final void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14793:1: ( ( ')' ) )
+            // InternalActionDSL.g:14794:1: ( ')' )
+            {
+            // InternalActionDSL.g:14794:1: ( ')' )
+            // InternalActionDSL.g:14795:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__Group__6__Impl"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group__0"
+    // InternalActionDSL.g:14805:1: rule__XBlockExpression__Group__0 : rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 ;
+    public final void rule__XBlockExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14809:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
+            // InternalActionDSL.g:14810:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
+            {
+            pushFollow(FOLLOW_8);
+            rule__XBlockExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBlockExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group__0"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group__0__Impl"
+    // InternalActionDSL.g:14817:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XBlockExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14821:1: ( ( () ) )
+            // InternalActionDSL.g:14822:1: ( () )
+            {
+            // InternalActionDSL.g:14822:1: ( () )
+            // InternalActionDSL.g:14823:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:14824:2: ()
+            // InternalActionDSL.g:14824:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group__1"
+    // InternalActionDSL.g:14832:1: rule__XBlockExpression__Group__1 : rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 ;
+    public final void rule__XBlockExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14836:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
+            // InternalActionDSL.g:14837:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
+            {
+            pushFollow(FOLLOW_107);
+            rule__XBlockExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBlockExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group__1"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group__1__Impl"
+    // InternalActionDSL.g:14844:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__XBlockExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14848:1: ( ( '{' ) )
+            // InternalActionDSL.g:14849:1: ( '{' )
+            {
+            // InternalActionDSL.g:14849:1: ( '{' )
+            // InternalActionDSL.g:14850:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            }
+            match(input,79,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group__2"
+    // InternalActionDSL.g:14859:1: rule__XBlockExpression__Group__2 : rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 ;
+    public final void rule__XBlockExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14863:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
+            // InternalActionDSL.g:14864:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
+            {
+            pushFollow(FOLLOW_107);
+            rule__XBlockExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBlockExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group__2"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group__2__Impl"
+    // InternalActionDSL.g:14871:1: rule__XBlockExpression__Group__2__Impl : ( ( rule__XBlockExpression__Group_2__0 )* ) ;
+    public final void rule__XBlockExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14875:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
+            // InternalActionDSL.g:14876:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            {
+            // InternalActionDSL.g:14876:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalActionDSL.g:14877:2: ( rule__XBlockExpression__Group_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup_2()); 
+            }
+            // InternalActionDSL.g:14878:2: ( rule__XBlockExpression__Group_2__0 )*
+            loop120:
+            do {
+                int alt120=2;
+                int LA120_0 = input.LA(1);
+
+                if ( ((LA120_0>=RULE_ID && LA120_0<=RULE_DECIMAL)||LA120_0==29||(LA120_0>=36 && LA120_0<=37)||LA120_0==42||(LA120_0>=46 && LA120_0<=52)||LA120_0==79||LA120_0==101||(LA120_0>=105 && LA120_0<=106)||LA120_0==109||LA120_0==111||(LA120_0>=115 && LA120_0<=123)||LA120_0==125||(LA120_0>=139 && LA120_0<=140)) ) {
+                    alt120=1;
+                }
+
+
+                switch (alt120) {
+            	case 1 :
+            	    // InternalActionDSL.g:14878:3: rule__XBlockExpression__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_91);
+            	    rule__XBlockExpression__Group_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop120;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group__3"
+    // InternalActionDSL.g:14886:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
+    public final void rule__XBlockExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14890:1: ( rule__XBlockExpression__Group__3__Impl )
+            // InternalActionDSL.g:14891:2: rule__XBlockExpression__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBlockExpression__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group__3"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group__3__Impl"
+    // InternalActionDSL.g:14897:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
+    public final void rule__XBlockExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14901:1: ( ( '}' ) )
+            // InternalActionDSL.g:14902:1: ( '}' )
+            {
+            // InternalActionDSL.g:14902:1: ( '}' )
+            // InternalActionDSL.g:14903:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
+            }
+            match(input,80,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group_2__0"
+    // InternalActionDSL.g:14913:1: rule__XBlockExpression__Group_2__0 : rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 ;
+    public final void rule__XBlockExpression__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14917:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
+            // InternalActionDSL.g:14918:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
+            {
+            pushFollow(FOLLOW_39);
+            rule__XBlockExpression__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBlockExpression__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group_2__0"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group_2__0__Impl"
+    // InternalActionDSL.g:14925:1: rule__XBlockExpression__Group_2__0__Impl : ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) ;
+    public final void rule__XBlockExpression__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14929:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
+            // InternalActionDSL.g:14930:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            {
+            // InternalActionDSL.g:14930:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalActionDSL.g:14931:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); 
+            }
+            // InternalActionDSL.g:14932:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalActionDSL.g:14932:3: rule__XBlockExpression__ExpressionsAssignment_2_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBlockExpression__ExpressionsAssignment_2_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group_2__1"
+    // InternalActionDSL.g:14940:1: rule__XBlockExpression__Group_2__1 : rule__XBlockExpression__Group_2__1__Impl ;
+    public final void rule__XBlockExpression__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14944:1: ( rule__XBlockExpression__Group_2__1__Impl )
+            // InternalActionDSL.g:14945:2: rule__XBlockExpression__Group_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBlockExpression__Group_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group_2__1"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group_2__1__Impl"
+    // InternalActionDSL.g:14951:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
+    public final void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14955:1: ( ( ( ';' )? ) )
+            // InternalActionDSL.g:14956:1: ( ( ';' )? )
+            {
+            // InternalActionDSL.g:14956:1: ( ( ';' )? )
+            // InternalActionDSL.g:14957:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); 
+            }
+            // InternalActionDSL.g:14958:2: ( ';' )?
+            int alt121=2;
+            int LA121_0 = input.LA(1);
+
+            if ( (LA121_0==99) ) {
+                alt121=1;
+            }
+            switch (alt121) {
+                case 1 :
+                    // InternalActionDSL.g:14958:3: ';'
+                    {
+                    match(input,99,FOLLOW_2); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group__0"
+    // InternalActionDSL.g:14967:1: rule__XVariableDeclaration__Group__0 : rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 ;
+    public final void rule__XVariableDeclaration__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14971:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
+            // InternalActionDSL.g:14972:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
+            {
+            pushFollow(FOLLOW_108);
+            rule__XVariableDeclaration__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group__0"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group__0__Impl"
+    // InternalActionDSL.g:14979:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
+    public final void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14983:1: ( ( () ) )
+            // InternalActionDSL.g:14984:1: ( () )
+            {
+            // InternalActionDSL.g:14984:1: ( () )
+            // InternalActionDSL.g:14985:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); 
+            }
+            // InternalActionDSL.g:14986:2: ()
+            // InternalActionDSL.g:14986:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group__1"
+    // InternalActionDSL.g:14994:1: rule__XVariableDeclaration__Group__1 : rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 ;
+    public final void rule__XVariableDeclaration__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:14998:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
+            // InternalActionDSL.g:14999:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
+            {
+            pushFollow(FOLLOW_64);
+            rule__XVariableDeclaration__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group__1"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group__1__Impl"
+    // InternalActionDSL.g:15006:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
+    public final void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15010:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
+            // InternalActionDSL.g:15011:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            {
+            // InternalActionDSL.g:15011:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalActionDSL.g:15012:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); 
+            }
+            // InternalActionDSL.g:15013:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalActionDSL.g:15013:3: rule__XVariableDeclaration__Alternatives_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Alternatives_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group__2"
+    // InternalActionDSL.g:15021:1: rule__XVariableDeclaration__Group__2 : rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 ;
+    public final void rule__XVariableDeclaration__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15025:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
+            // InternalActionDSL.g:15026:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
+            {
+            pushFollow(FOLLOW_48);
+            rule__XVariableDeclaration__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group__2"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group__2__Impl"
+    // InternalActionDSL.g:15033:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
+    public final void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15037:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
+            // InternalActionDSL.g:15038:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            {
+            // InternalActionDSL.g:15038:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalActionDSL.g:15039:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); 
+            }
+            // InternalActionDSL.g:15040:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalActionDSL.g:15040:3: rule__XVariableDeclaration__Alternatives_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Alternatives_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group__3"
+    // InternalActionDSL.g:15048:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
+    public final void rule__XVariableDeclaration__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15052:1: ( rule__XVariableDeclaration__Group__3__Impl )
+            // InternalActionDSL.g:15053:2: rule__XVariableDeclaration__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group__3"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group__3__Impl"
+    // InternalActionDSL.g:15059:1: rule__XVariableDeclaration__Group__3__Impl : ( ( rule__XVariableDeclaration__Group_3__0 )? ) ;
+    public final void rule__XVariableDeclaration__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15063:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
+            // InternalActionDSL.g:15064:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:15064:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalActionDSL.g:15065:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:15066:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            int alt122=2;
+            int LA122_0 = input.LA(1);
+
+            if ( (LA122_0==13) ) {
+                alt122=1;
+            }
+            switch (alt122) {
+                case 1 :
+                    // InternalActionDSL.g:15066:3: rule__XVariableDeclaration__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XVariableDeclaration__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0"
+    // InternalActionDSL.g:15075:1: rule__XVariableDeclaration__Group_2_0__0 : rule__XVariableDeclaration__Group_2_0__0__Impl ;
+    public final void rule__XVariableDeclaration__Group_2_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15079:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
+            // InternalActionDSL.g:15080:2: rule__XVariableDeclaration__Group_2_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group_2_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_2_0__0"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0__Impl"
+    // InternalActionDSL.g:15086:1: rule__XVariableDeclaration__Group_2_0__0__Impl : ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) ;
+    public final void rule__XVariableDeclaration__Group_2_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15090:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
+            // InternalActionDSL.g:15091:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            {
+            // InternalActionDSL.g:15091:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalActionDSL.g:15092:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); 
+            }
+            // InternalActionDSL.g:15093:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalActionDSL.g:15093:3: rule__XVariableDeclaration__Group_2_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group_2_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_2_0__0__Impl"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0"
+    // InternalActionDSL.g:15102:1: rule__XVariableDeclaration__Group_2_0_0__0 : rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 ;
+    public final void rule__XVariableDeclaration__Group_2_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15106:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
+            // InternalActionDSL.g:15107:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__XVariableDeclaration__Group_2_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group_2_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_2_0_0__0"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0__Impl"
+    // InternalActionDSL.g:15114:1: rule__XVariableDeclaration__Group_2_0_0__0__Impl : ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) ;
+    public final void rule__XVariableDeclaration__Group_2_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15118:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
+            // InternalActionDSL.g:15119:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            {
+            // InternalActionDSL.g:15119:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalActionDSL.g:15120:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); 
+            }
+            // InternalActionDSL.g:15121:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalActionDSL.g:15121:3: rule__XVariableDeclaration__TypeAssignment_2_0_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__TypeAssignment_2_0_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_2_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1"
+    // InternalActionDSL.g:15129:1: rule__XVariableDeclaration__Group_2_0_0__1 : rule__XVariableDeclaration__Group_2_0_0__1__Impl ;
+    public final void rule__XVariableDeclaration__Group_2_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15133:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
+            // InternalActionDSL.g:15134:2: rule__XVariableDeclaration__Group_2_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group_2_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_2_0_0__1"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1__Impl"
+    // InternalActionDSL.g:15140:1: rule__XVariableDeclaration__Group_2_0_0__1__Impl : ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) ;
+    public final void rule__XVariableDeclaration__Group_2_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15144:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
+            // InternalActionDSL.g:15145:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            {
+            // InternalActionDSL.g:15145:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalActionDSL.g:15146:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); 
+            }
+            // InternalActionDSL.g:15147:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalActionDSL.g:15147:3: rule__XVariableDeclaration__NameAssignment_2_0_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__NameAssignment_2_0_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_2_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_3__0"
+    // InternalActionDSL.g:15156:1: rule__XVariableDeclaration__Group_3__0 : rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 ;
+    public final void rule__XVariableDeclaration__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15160:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
+            // InternalActionDSL.g:15161:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XVariableDeclaration__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_3__0"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_3__0__Impl"
+    // InternalActionDSL.g:15168:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
+    public final void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15172:1: ( ( '=' ) )
+            // InternalActionDSL.g:15173:1: ( '=' )
+            {
+            // InternalActionDSL.g:15173:1: ( '=' )
+            // InternalActionDSL.g:15174:2: '='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0()); 
+            }
+            match(input,13,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_3__1"
+    // InternalActionDSL.g:15183:1: rule__XVariableDeclaration__Group_3__1 : rule__XVariableDeclaration__Group_3__1__Impl ;
+    public final void rule__XVariableDeclaration__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15187:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
+            // InternalActionDSL.g:15188:2: rule__XVariableDeclaration__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_3__1"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_3__1__Impl"
+    // InternalActionDSL.g:15194:1: rule__XVariableDeclaration__Group_3__1__Impl : ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) ;
+    public final void rule__XVariableDeclaration__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15198:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
+            // InternalActionDSL.g:15199:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            {
+            // InternalActionDSL.g:15199:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalActionDSL.g:15200:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); 
+            }
+            // InternalActionDSL.g:15201:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalActionDSL.g:15201:3: rule__XVariableDeclaration__RightAssignment_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__RightAssignment_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__JvmFormalParameter__Group__0"
+    // InternalActionDSL.g:15210:1: rule__JvmFormalParameter__Group__0 : rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 ;
+    public final void rule__JvmFormalParameter__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15214:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
+            // InternalActionDSL.g:15215:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__JvmFormalParameter__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmFormalParameter__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmFormalParameter__Group__0"
+
+
+    // $ANTLR start "rule__JvmFormalParameter__Group__0__Impl"
+    // InternalActionDSL.g:15222:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
+    public final void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15226:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
+            // InternalActionDSL.g:15227:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            {
+            // InternalActionDSL.g:15227:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalActionDSL.g:15228:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+            // InternalActionDSL.g:15229:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            int alt123=2;
+            int LA123_0 = input.LA(1);
+
+            if ( (LA123_0==RULE_ID) ) {
+                int LA123_1 = input.LA(2);
+
+                if ( (LA123_1==RULE_ID||LA123_1==29||LA123_1==45||LA123_1==106) ) {
+                    alt123=1;
+                }
+            }
+            else if ( (LA123_0==33||LA123_0==101) ) {
+                alt123=1;
+            }
+            switch (alt123) {
+                case 1 :
+                    // InternalActionDSL.g:15229:3: rule__JvmFormalParameter__ParameterTypeAssignment_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__JvmFormalParameter__ParameterTypeAssignment_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmFormalParameter__Group__0__Impl"
+
+
+    // $ANTLR start "rule__JvmFormalParameter__Group__1"
+    // InternalActionDSL.g:15237:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
+    public final void rule__JvmFormalParameter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15241:1: ( rule__JvmFormalParameter__Group__1__Impl )
+            // InternalActionDSL.g:15242:2: rule__JvmFormalParameter__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmFormalParameter__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmFormalParameter__Group__1"
+
+
+    // $ANTLR start "rule__JvmFormalParameter__Group__1__Impl"
+    // InternalActionDSL.g:15248:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
+    public final void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15252:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalActionDSL.g:15253:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            {
+            // InternalActionDSL.g:15253:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalActionDSL.g:15254:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+            // InternalActionDSL.g:15255:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalActionDSL.g:15255:3: rule__JvmFormalParameter__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmFormalParameter__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmFormalParameter__Group__1__Impl"
+
+
+    // $ANTLR start "rule__FullJvmFormalParameter__Group__0"
+    // InternalActionDSL.g:15264:1: rule__FullJvmFormalParameter__Group__0 : rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 ;
+    public final void rule__FullJvmFormalParameter__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15268:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
+            // InternalActionDSL.g:15269:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__FullJvmFormalParameter__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__FullJvmFormalParameter__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FullJvmFormalParameter__Group__0"
+
+
+    // $ANTLR start "rule__FullJvmFormalParameter__Group__0__Impl"
+    // InternalActionDSL.g:15276:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
+    public final void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15280:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
+            // InternalActionDSL.g:15281:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            {
+            // InternalActionDSL.g:15281:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalActionDSL.g:15282:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+            // InternalActionDSL.g:15283:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalActionDSL.g:15283:3: rule__FullJvmFormalParameter__ParameterTypeAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__FullJvmFormalParameter__ParameterTypeAssignment_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FullJvmFormalParameter__Group__0__Impl"
+
+
+    // $ANTLR start "rule__FullJvmFormalParameter__Group__1"
+    // InternalActionDSL.g:15291:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
+    public final void rule__FullJvmFormalParameter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15295:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
+            // InternalActionDSL.g:15296:2: rule__FullJvmFormalParameter__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__FullJvmFormalParameter__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FullJvmFormalParameter__Group__1"
+
+
+    // $ANTLR start "rule__FullJvmFormalParameter__Group__1__Impl"
+    // InternalActionDSL.g:15302:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
+    public final void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15306:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalActionDSL.g:15307:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            {
+            // InternalActionDSL.g:15307:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalActionDSL.g:15308:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+            // InternalActionDSL.g:15309:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalActionDSL.g:15309:3: rule__FullJvmFormalParameter__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__FullJvmFormalParameter__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FullJvmFormalParameter__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__0"
+    // InternalActionDSL.g:15318:1: rule__XFeatureCall__Group__0 : rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 ;
+    public final void rule__XFeatureCall__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15322:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
+            // InternalActionDSL.g:15323:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
+            {
+            pushFollow(FOLLOW_82);
+            rule__XFeatureCall__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__0"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__0__Impl"
+    // InternalActionDSL.g:15330:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
+    public final void rule__XFeatureCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15334:1: ( ( () ) )
+            // InternalActionDSL.g:15335:1: ( () )
+            {
+            // InternalActionDSL.g:15335:1: ( () )
+            // InternalActionDSL.g:15336:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); 
+            }
+            // InternalActionDSL.g:15337:2: ()
+            // InternalActionDSL.g:15337:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__1"
+    // InternalActionDSL.g:15345:1: rule__XFeatureCall__Group__1 : rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 ;
+    public final void rule__XFeatureCall__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15349:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
+            // InternalActionDSL.g:15350:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
+            {
+            pushFollow(FOLLOW_82);
+            rule__XFeatureCall__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__1"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__1__Impl"
+    // InternalActionDSL.g:15357:1: rule__XFeatureCall__Group__1__Impl : ( ( rule__XFeatureCall__Group_1__0 )? ) ;
+    public final void rule__XFeatureCall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15361:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
+            // InternalActionDSL.g:15362:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            {
+            // InternalActionDSL.g:15362:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalActionDSL.g:15363:2: ( rule__XFeatureCall__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:15364:2: ( rule__XFeatureCall__Group_1__0 )?
+            int alt124=2;
+            int LA124_0 = input.LA(1);
+
+            if ( (LA124_0==29) ) {
+                alt124=1;
+            }
+            switch (alt124) {
+                case 1 :
+                    // InternalActionDSL.g:15364:3: rule__XFeatureCall__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XFeatureCall__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__2"
+    // InternalActionDSL.g:15372:1: rule__XFeatureCall__Group__2 : rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 ;
+    public final void rule__XFeatureCall__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15376:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
+            // InternalActionDSL.g:15377:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
+            {
+            pushFollow(FOLLOW_83);
+            rule__XFeatureCall__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__2"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__2__Impl"
+    // InternalActionDSL.g:15384:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
+    public final void rule__XFeatureCall__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15388:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
+            // InternalActionDSL.g:15389:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            {
+            // InternalActionDSL.g:15389:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalActionDSL.g:15390:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); 
+            }
+            // InternalActionDSL.g:15391:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalActionDSL.g:15391:3: rule__XFeatureCall__FeatureAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__FeatureAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__3"
+    // InternalActionDSL.g:15399:1: rule__XFeatureCall__Group__3 : rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 ;
+    public final void rule__XFeatureCall__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15403:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
+            // InternalActionDSL.g:15404:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
+            {
+            pushFollow(FOLLOW_83);
+            rule__XFeatureCall__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__3"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__3__Impl"
+    // InternalActionDSL.g:15411:1: rule__XFeatureCall__Group__3__Impl : ( ( rule__XFeatureCall__Group_3__0 )? ) ;
+    public final void rule__XFeatureCall__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15415:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
+            // InternalActionDSL.g:15416:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:15416:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalActionDSL.g:15417:2: ( rule__XFeatureCall__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:15418:2: ( rule__XFeatureCall__Group_3__0 )?
+            int alt125=2;
+            alt125 = dfa125.predict(input);
+            switch (alt125) {
+                case 1 :
+                    // InternalActionDSL.g:15418:3: rule__XFeatureCall__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XFeatureCall__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__4"
+    // InternalActionDSL.g:15426:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
+    public final void rule__XFeatureCall__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15430:1: ( rule__XFeatureCall__Group__4__Impl )
+            // InternalActionDSL.g:15431:2: rule__XFeatureCall__Group__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__4"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group__4__Impl"
+    // InternalActionDSL.g:15437:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
+    public final void rule__XFeatureCall__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15441:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
+            // InternalActionDSL.g:15442:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            {
+            // InternalActionDSL.g:15442:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalActionDSL.g:15443:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); 
+            }
+            // InternalActionDSL.g:15444:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            int alt126=2;
+            alt126 = dfa126.predict(input);
+            switch (alt126) {
+                case 1 :
+                    // InternalActionDSL.g:15444:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1__0"
+    // InternalActionDSL.g:15453:1: rule__XFeatureCall__Group_1__0 : rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 ;
+    public final void rule__XFeatureCall__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15457:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
+            // InternalActionDSL.g:15458:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__XFeatureCall__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1__0"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1__0__Impl"
+    // InternalActionDSL.g:15465:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
+    public final void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15469:1: ( ( '<' ) )
+            // InternalActionDSL.g:15470:1: ( '<' )
+            {
+            // InternalActionDSL.g:15470:1: ( '<' )
+            // InternalActionDSL.g:15471:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0()); 
+            }
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1__1"
+    // InternalActionDSL.g:15480:1: rule__XFeatureCall__Group_1__1 : rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 ;
+    public final void rule__XFeatureCall__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15484:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
+            // InternalActionDSL.g:15485:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
+            {
+            pushFollow(FOLLOW_85);
+            rule__XFeatureCall__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_1__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1__1"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1__1__Impl"
+    // InternalActionDSL.g:15492:1: rule__XFeatureCall__Group_1__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) ;
+    public final void rule__XFeatureCall__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15496:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
+            // InternalActionDSL.g:15497:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            {
+            // InternalActionDSL.g:15497:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalActionDSL.g:15498:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); 
+            }
+            // InternalActionDSL.g:15499:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalActionDSL.g:15499:3: rule__XFeatureCall__TypeArgumentsAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__TypeArgumentsAssignment_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1__2"
+    // InternalActionDSL.g:15507:1: rule__XFeatureCall__Group_1__2 : rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 ;
+    public final void rule__XFeatureCall__Group_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15511:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
+            // InternalActionDSL.g:15512:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
+            {
+            pushFollow(FOLLOW_85);
+            rule__XFeatureCall__Group_1__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_1__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1__2"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1__2__Impl"
+    // InternalActionDSL.g:15519:1: rule__XFeatureCall__Group_1__2__Impl : ( ( rule__XFeatureCall__Group_1_2__0 )* ) ;
+    public final void rule__XFeatureCall__Group_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15523:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
+            // InternalActionDSL.g:15524:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            {
+            // InternalActionDSL.g:15524:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalActionDSL.g:15525:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); 
+            }
+            // InternalActionDSL.g:15526:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            loop127:
+            do {
+                int alt127=2;
+                int LA127_0 = input.LA(1);
+
+                if ( (LA127_0==103) ) {
+                    alt127=1;
+                }
+
+
+                switch (alt127) {
+            	case 1 :
+            	    // InternalActionDSL.g:15526:3: rule__XFeatureCall__Group_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XFeatureCall__Group_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop127;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1__2__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1__3"
+    // InternalActionDSL.g:15534:1: rule__XFeatureCall__Group_1__3 : rule__XFeatureCall__Group_1__3__Impl ;
+    public final void rule__XFeatureCall__Group_1__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15538:1: ( rule__XFeatureCall__Group_1__3__Impl )
+            // InternalActionDSL.g:15539:2: rule__XFeatureCall__Group_1__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_1__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1__3"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1__3__Impl"
+    // InternalActionDSL.g:15545:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
+    public final void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15549:1: ( ( '>' ) )
+            // InternalActionDSL.g:15550:1: ( '>' )
+            {
+            // InternalActionDSL.g:15550:1: ( '>' )
+            // InternalActionDSL.g:15551:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1__3__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1_2__0"
+    // InternalActionDSL.g:15561:1: rule__XFeatureCall__Group_1_2__0 : rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 ;
+    public final void rule__XFeatureCall__Group_1_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15565:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
+            // InternalActionDSL.g:15566:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__XFeatureCall__Group_1_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_1_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1_2__0"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1_2__0__Impl"
+    // InternalActionDSL.g:15573:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
+    public final void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15577:1: ( ( ',' ) )
+            // InternalActionDSL.g:15578:1: ( ',' )
+            {
+            // InternalActionDSL.g:15578:1: ( ',' )
+            // InternalActionDSL.g:15579:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1_2__0__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1_2__1"
+    // InternalActionDSL.g:15588:1: rule__XFeatureCall__Group_1_2__1 : rule__XFeatureCall__Group_1_2__1__Impl ;
+    public final void rule__XFeatureCall__Group_1_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15592:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
+            // InternalActionDSL.g:15593:2: rule__XFeatureCall__Group_1_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_1_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1_2__1"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_1_2__1__Impl"
+    // InternalActionDSL.g:15599:1: rule__XFeatureCall__Group_1_2__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) ;
+    public final void rule__XFeatureCall__Group_1_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15603:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
+            // InternalActionDSL.g:15604:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            {
+            // InternalActionDSL.g:15604:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalActionDSL.g:15605:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); 
+            }
+            // InternalActionDSL.g:15606:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalActionDSL.g:15606:3: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__TypeArgumentsAssignment_1_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_1_2__1__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3__0"
+    // InternalActionDSL.g:15615:1: rule__XFeatureCall__Group_3__0 : rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 ;
+    public final void rule__XFeatureCall__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15619:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
+            // InternalActionDSL.g:15620:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
+            {
+            pushFollow(FOLLOW_86);
+            rule__XFeatureCall__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3__0"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3__0__Impl"
+    // InternalActionDSL.g:15627:1: rule__XFeatureCall__Group_3__0__Impl : ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) ;
+    public final void rule__XFeatureCall__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15631:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
+            // InternalActionDSL.g:15632:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            {
+            // InternalActionDSL.g:15632:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalActionDSL.g:15633:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); 
+            }
+            // InternalActionDSL.g:15634:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalActionDSL.g:15634:3: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__ExplicitOperationCallAssignment_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3__1"
+    // InternalActionDSL.g:15642:1: rule__XFeatureCall__Group_3__1 : rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 ;
+    public final void rule__XFeatureCall__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15646:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
+            // InternalActionDSL.g:15647:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
+            {
+            pushFollow(FOLLOW_86);
+            rule__XFeatureCall__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_3__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3__1"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3__1__Impl"
+    // InternalActionDSL.g:15654:1: rule__XFeatureCall__Group_3__1__Impl : ( ( rule__XFeatureCall__Alternatives_3_1 )? ) ;
+    public final void rule__XFeatureCall__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15658:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
+            // InternalActionDSL.g:15659:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            {
+            // InternalActionDSL.g:15659:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalActionDSL.g:15660:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); 
+            }
+            // InternalActionDSL.g:15661:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            int alt128=2;
+            int LA128_0 = input.LA(1);
+
+            if ( ((LA128_0>=RULE_ID && LA128_0<=RULE_DECIMAL)||LA128_0==29||LA128_0==33||(LA128_0>=36 && LA128_0<=37)||LA128_0==42||(LA128_0>=47 && LA128_0<=52)||LA128_0==79||LA128_0==101||(LA128_0>=105 && LA128_0<=106)||LA128_0==109||LA128_0==111||(LA128_0>=115 && LA128_0<=123)||LA128_0==125||LA128_0==138||LA128_0==140) ) {
+                alt128=1;
+            }
+            switch (alt128) {
+                case 1 :
+                    // InternalActionDSL.g:15661:3: rule__XFeatureCall__Alternatives_3_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XFeatureCall__Alternatives_3_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3__2"
+    // InternalActionDSL.g:15669:1: rule__XFeatureCall__Group_3__2 : rule__XFeatureCall__Group_3__2__Impl ;
+    public final void rule__XFeatureCall__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15673:1: ( rule__XFeatureCall__Group_3__2__Impl )
+            // InternalActionDSL.g:15674:2: rule__XFeatureCall__Group_3__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_3__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3__2"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3__2__Impl"
+    // InternalActionDSL.g:15680:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
+    public final void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15684:1: ( ( ')' ) )
+            // InternalActionDSL.g:15685:1: ( ')' )
+            {
+            // InternalActionDSL.g:15685:1: ( ')' )
+            // InternalActionDSL.g:15686:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0"
+    // InternalActionDSL.g:15696:1: rule__XFeatureCall__Group_3_1_1__0 : rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 ;
+    public final void rule__XFeatureCall__Group_3_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15700:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
+            // InternalActionDSL.g:15701:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XFeatureCall__Group_3_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_3_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3_1_1__0"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0__Impl"
+    // InternalActionDSL.g:15708:1: rule__XFeatureCall__Group_3_1_1__0__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) ;
+    public final void rule__XFeatureCall__Group_3_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15712:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
+            // InternalActionDSL.g:15713:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            {
+            // InternalActionDSL.g:15713:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalActionDSL.g:15714:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); 
+            }
+            // InternalActionDSL.g:15715:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalActionDSL.g:15715:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1"
+    // InternalActionDSL.g:15723:1: rule__XFeatureCall__Group_3_1_1__1 : rule__XFeatureCall__Group_3_1_1__1__Impl ;
+    public final void rule__XFeatureCall__Group_3_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15727:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
+            // InternalActionDSL.g:15728:2: rule__XFeatureCall__Group_3_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_3_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3_1_1__1"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1__Impl"
+    // InternalActionDSL.g:15734:1: rule__XFeatureCall__Group_3_1_1__1__Impl : ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) ;
+    public final void rule__XFeatureCall__Group_3_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15738:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
+            // InternalActionDSL.g:15739:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            {
+            // InternalActionDSL.g:15739:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalActionDSL.g:15740:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); 
+            }
+            // InternalActionDSL.g:15741:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            loop129:
+            do {
+                int alt129=2;
+                int LA129_0 = input.LA(1);
+
+                if ( (LA129_0==103) ) {
+                    alt129=1;
+                }
+
+
+                switch (alt129) {
+            	case 1 :
+            	    // InternalActionDSL.g:15741:3: rule__XFeatureCall__Group_3_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XFeatureCall__Group_3_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop129;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0"
+    // InternalActionDSL.g:15750:1: rule__XFeatureCall__Group_3_1_1_1__0 : rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 ;
+    public final void rule__XFeatureCall__Group_3_1_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15754:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
+            // InternalActionDSL.g:15755:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XFeatureCall__Group_3_1_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_3_1_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3_1_1_1__0"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0__Impl"
+    // InternalActionDSL.g:15762:1: rule__XFeatureCall__Group_3_1_1_1__0__Impl : ( ',' ) ;
+    public final void rule__XFeatureCall__Group_3_1_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15766:1: ( ( ',' ) )
+            // InternalActionDSL.g:15767:1: ( ',' )
+            {
+            // InternalActionDSL.g:15767:1: ( ',' )
+            // InternalActionDSL.g:15768:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3_1_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1"
+    // InternalActionDSL.g:15777:1: rule__XFeatureCall__Group_3_1_1_1__1 : rule__XFeatureCall__Group_3_1_1_1__1__Impl ;
+    public final void rule__XFeatureCall__Group_3_1_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15781:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
+            // InternalActionDSL.g:15782:2: rule__XFeatureCall__Group_3_1_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__Group_3_1_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3_1_1_1__1"
+
+
+    // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1__Impl"
+    // InternalActionDSL.g:15788:1: rule__XFeatureCall__Group_3_1_1_1__1__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) ;
+    public final void rule__XFeatureCall__Group_3_1_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15792:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
+            // InternalActionDSL.g:15793:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            {
+            // InternalActionDSL.g:15793:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalActionDSL.g:15794:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); 
+            }
+            // InternalActionDSL.g:15795:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalActionDSL.g:15795:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__Group_3_1_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__0"
+    // InternalActionDSL.g:15804:1: rule__XConstructorCall__Group__0 : rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 ;
+    public final void rule__XConstructorCall__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15808:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
+            // InternalActionDSL.g:15809:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
+            {
+            pushFollow(FOLLOW_109);
+            rule__XConstructorCall__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__0"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__0__Impl"
+    // InternalActionDSL.g:15816:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
+    public final void rule__XConstructorCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15820:1: ( ( () ) )
+            // InternalActionDSL.g:15821:1: ( () )
+            {
+            // InternalActionDSL.g:15821:1: ( () )
+            // InternalActionDSL.g:15822:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); 
+            }
+            // InternalActionDSL.g:15823:2: ()
+            // InternalActionDSL.g:15823:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__1"
+    // InternalActionDSL.g:15831:1: rule__XConstructorCall__Group__1 : rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 ;
+    public final void rule__XConstructorCall__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15835:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
+            // InternalActionDSL.g:15836:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__XConstructorCall__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__1"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__1__Impl"
+    // InternalActionDSL.g:15843:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
+    public final void rule__XConstructorCall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15847:1: ( ( 'new' ) )
+            // InternalActionDSL.g:15848:1: ( 'new' )
+            {
+            // InternalActionDSL.g:15848:1: ( 'new' )
+            // InternalActionDSL.g:15849:2: 'new'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
+            }
+            match(input,118,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__2"
+    // InternalActionDSL.g:15858:1: rule__XConstructorCall__Group__2 : rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 ;
+    public final void rule__XConstructorCall__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15862:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
+            // InternalActionDSL.g:15863:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
+            {
+            pushFollow(FOLLOW_110);
+            rule__XConstructorCall__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__2"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__2__Impl"
+    // InternalActionDSL.g:15870:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
+    public final void rule__XConstructorCall__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15874:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
+            // InternalActionDSL.g:15875:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            {
+            // InternalActionDSL.g:15875:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalActionDSL.g:15876:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); 
+            }
+            // InternalActionDSL.g:15877:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalActionDSL.g:15877:3: rule__XConstructorCall__ConstructorAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__ConstructorAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__3"
+    // InternalActionDSL.g:15885:1: rule__XConstructorCall__Group__3 : rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 ;
+    public final void rule__XConstructorCall__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15889:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
+            // InternalActionDSL.g:15890:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
+            {
+            pushFollow(FOLLOW_110);
+            rule__XConstructorCall__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__3"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__3__Impl"
+    // InternalActionDSL.g:15897:1: rule__XConstructorCall__Group__3__Impl : ( ( rule__XConstructorCall__Group_3__0 )? ) ;
+    public final void rule__XConstructorCall__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15901:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
+            // InternalActionDSL.g:15902:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            {
+            // InternalActionDSL.g:15902:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalActionDSL.g:15903:2: ( rule__XConstructorCall__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_3()); 
+            }
+            // InternalActionDSL.g:15904:2: ( rule__XConstructorCall__Group_3__0 )?
+            int alt130=2;
+            alt130 = dfa130.predict(input);
+            switch (alt130) {
+                case 1 :
+                    // InternalActionDSL.g:15904:3: rule__XConstructorCall__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XConstructorCall__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__4"
+    // InternalActionDSL.g:15912:1: rule__XConstructorCall__Group__4 : rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 ;
+    public final void rule__XConstructorCall__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15916:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
+            // InternalActionDSL.g:15917:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
+            {
+            pushFollow(FOLLOW_110);
+            rule__XConstructorCall__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__4"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__4__Impl"
+    // InternalActionDSL.g:15924:1: rule__XConstructorCall__Group__4__Impl : ( ( rule__XConstructorCall__Group_4__0 )? ) ;
+    public final void rule__XConstructorCall__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15928:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
+            // InternalActionDSL.g:15929:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            {
+            // InternalActionDSL.g:15929:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalActionDSL.g:15930:2: ( rule__XConstructorCall__Group_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_4()); 
+            }
+            // InternalActionDSL.g:15931:2: ( rule__XConstructorCall__Group_4__0 )?
+            int alt131=2;
+            alt131 = dfa131.predict(input);
+            switch (alt131) {
+                case 1 :
+                    // InternalActionDSL.g:15931:3: rule__XConstructorCall__Group_4__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XConstructorCall__Group_4__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getGroup_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__5"
+    // InternalActionDSL.g:15939:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
+    public final void rule__XConstructorCall__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15943:1: ( rule__XConstructorCall__Group__5__Impl )
+            // InternalActionDSL.g:15944:2: rule__XConstructorCall__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__5"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__5__Impl"
+    // InternalActionDSL.g:15950:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
+    public final void rule__XConstructorCall__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15954:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
+            // InternalActionDSL.g:15955:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            {
+            // InternalActionDSL.g:15955:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalActionDSL.g:15956:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); 
+            }
+            // InternalActionDSL.g:15957:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            int alt132=2;
+            alt132 = dfa132.predict(input);
+            switch (alt132) {
+                case 1 :
+                    // InternalActionDSL.g:15957:3: rule__XConstructorCall__ArgumentsAssignment_5
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XConstructorCall__ArgumentsAssignment_5();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__5__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3__0"
+    // InternalActionDSL.g:15966:1: rule__XConstructorCall__Group_3__0 : rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 ;
+    public final void rule__XConstructorCall__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15970:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
+            // InternalActionDSL.g:15971:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__XConstructorCall__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3__0"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3__0__Impl"
+    // InternalActionDSL.g:15978:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
+    public final void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15982:1: ( ( ( '<' ) ) )
+            // InternalActionDSL.g:15983:1: ( ( '<' ) )
+            {
+            // InternalActionDSL.g:15983:1: ( ( '<' ) )
+            // InternalActionDSL.g:15984:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); 
+            }
+            // InternalActionDSL.g:15985:2: ( '<' )
+            // InternalActionDSL.g:15985:3: '<'
+            {
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3__1"
+    // InternalActionDSL.g:15993:1: rule__XConstructorCall__Group_3__1 : rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 ;
+    public final void rule__XConstructorCall__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:15997:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
+            // InternalActionDSL.g:15998:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
+            {
+            pushFollow(FOLLOW_85);
+            rule__XConstructorCall__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_3__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3__1"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3__1__Impl"
+    // InternalActionDSL.g:16005:1: rule__XConstructorCall__Group_3__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) ;
+    public final void rule__XConstructorCall__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16009:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
+            // InternalActionDSL.g:16010:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            {
+            // InternalActionDSL.g:16010:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalActionDSL.g:16011:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); 
+            }
+            // InternalActionDSL.g:16012:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalActionDSL.g:16012:3: rule__XConstructorCall__TypeArgumentsAssignment_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__TypeArgumentsAssignment_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3__2"
+    // InternalActionDSL.g:16020:1: rule__XConstructorCall__Group_3__2 : rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 ;
+    public final void rule__XConstructorCall__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16024:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
+            // InternalActionDSL.g:16025:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
+            {
+            pushFollow(FOLLOW_85);
+            rule__XConstructorCall__Group_3__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_3__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3__2"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3__2__Impl"
+    // InternalActionDSL.g:16032:1: rule__XConstructorCall__Group_3__2__Impl : ( ( rule__XConstructorCall__Group_3_2__0 )* ) ;
+    public final void rule__XConstructorCall__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16036:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
+            // InternalActionDSL.g:16037:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            {
+            // InternalActionDSL.g:16037:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalActionDSL.g:16038:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); 
+            }
+            // InternalActionDSL.g:16039:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            loop133:
+            do {
+                int alt133=2;
+                int LA133_0 = input.LA(1);
+
+                if ( (LA133_0==103) ) {
+                    alt133=1;
+                }
+
+
+                switch (alt133) {
+            	case 1 :
+            	    // InternalActionDSL.g:16039:3: rule__XConstructorCall__Group_3_2__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XConstructorCall__Group_3_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop133;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3__3"
+    // InternalActionDSL.g:16047:1: rule__XConstructorCall__Group_3__3 : rule__XConstructorCall__Group_3__3__Impl ;
+    public final void rule__XConstructorCall__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16051:1: ( rule__XConstructorCall__Group_3__3__Impl )
+            // InternalActionDSL.g:16052:2: rule__XConstructorCall__Group_3__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_3__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3__3"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3__3__Impl"
+    // InternalActionDSL.g:16058:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
+    public final void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16062:1: ( ( '>' ) )
+            // InternalActionDSL.g:16063:1: ( '>' )
+            {
+            // InternalActionDSL.g:16063:1: ( '>' )
+            // InternalActionDSL.g:16064:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3_2__0"
+    // InternalActionDSL.g:16074:1: rule__XConstructorCall__Group_3_2__0 : rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 ;
+    public final void rule__XConstructorCall__Group_3_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16078:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
+            // InternalActionDSL.g:16079:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__XConstructorCall__Group_3_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_3_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3_2__0"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3_2__0__Impl"
+    // InternalActionDSL.g:16086:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
+    public final void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16090:1: ( ( ',' ) )
+            // InternalActionDSL.g:16091:1: ( ',' )
+            {
+            // InternalActionDSL.g:16091:1: ( ',' )
+            // InternalActionDSL.g:16092:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3_2__0__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3_2__1"
+    // InternalActionDSL.g:16101:1: rule__XConstructorCall__Group_3_2__1 : rule__XConstructorCall__Group_3_2__1__Impl ;
+    public final void rule__XConstructorCall__Group_3_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16105:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
+            // InternalActionDSL.g:16106:2: rule__XConstructorCall__Group_3_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_3_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3_2__1"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_3_2__1__Impl"
+    // InternalActionDSL.g:16112:1: rule__XConstructorCall__Group_3_2__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) ;
+    public final void rule__XConstructorCall__Group_3_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16116:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
+            // InternalActionDSL.g:16117:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            {
+            // InternalActionDSL.g:16117:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalActionDSL.g:16118:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); 
+            }
+            // InternalActionDSL.g:16119:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalActionDSL.g:16119:3: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__TypeArgumentsAssignment_3_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_3_2__1__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4__0"
+    // InternalActionDSL.g:16128:1: rule__XConstructorCall__Group_4__0 : rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 ;
+    public final void rule__XConstructorCall__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16132:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
+            // InternalActionDSL.g:16133:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
+            {
+            pushFollow(FOLLOW_86);
+            rule__XConstructorCall__Group_4__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_4__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4__0"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4__0__Impl"
+    // InternalActionDSL.g:16140:1: rule__XConstructorCall__Group_4__0__Impl : ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) ;
+    public final void rule__XConstructorCall__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16144:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
+            // InternalActionDSL.g:16145:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            {
+            // InternalActionDSL.g:16145:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalActionDSL.g:16146:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); 
+            }
+            // InternalActionDSL.g:16147:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalActionDSL.g:16147:3: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4__1"
+    // InternalActionDSL.g:16155:1: rule__XConstructorCall__Group_4__1 : rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 ;
+    public final void rule__XConstructorCall__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16159:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
+            // InternalActionDSL.g:16160:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
+            {
+            pushFollow(FOLLOW_86);
+            rule__XConstructorCall__Group_4__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_4__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4__1"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4__1__Impl"
+    // InternalActionDSL.g:16167:1: rule__XConstructorCall__Group_4__1__Impl : ( ( rule__XConstructorCall__Alternatives_4_1 )? ) ;
+    public final void rule__XConstructorCall__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16171:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
+            // InternalActionDSL.g:16172:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            {
+            // InternalActionDSL.g:16172:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalActionDSL.g:16173:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); 
+            }
+            // InternalActionDSL.g:16174:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            int alt134=2;
+            int LA134_0 = input.LA(1);
+
+            if ( ((LA134_0>=RULE_ID && LA134_0<=RULE_DECIMAL)||LA134_0==29||LA134_0==33||(LA134_0>=36 && LA134_0<=37)||LA134_0==42||(LA134_0>=47 && LA134_0<=52)||LA134_0==79||LA134_0==101||(LA134_0>=105 && LA134_0<=106)||LA134_0==109||LA134_0==111||(LA134_0>=115 && LA134_0<=123)||LA134_0==125||LA134_0==138||LA134_0==140) ) {
+                alt134=1;
+            }
+            switch (alt134) {
+                case 1 :
+                    // InternalActionDSL.g:16174:3: rule__XConstructorCall__Alternatives_4_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XConstructorCall__Alternatives_4_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4__2"
+    // InternalActionDSL.g:16182:1: rule__XConstructorCall__Group_4__2 : rule__XConstructorCall__Group_4__2__Impl ;
+    public final void rule__XConstructorCall__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16186:1: ( rule__XConstructorCall__Group_4__2__Impl )
+            // InternalActionDSL.g:16187:2: rule__XConstructorCall__Group_4__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_4__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4__2"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4__2__Impl"
+    // InternalActionDSL.g:16193:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
+    public final void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16197:1: ( ( ')' ) )
+            // InternalActionDSL.g:16198:1: ( ')' )
+            {
+            // InternalActionDSL.g:16198:1: ( ')' )
+            // InternalActionDSL.g:16199:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0"
+    // InternalActionDSL.g:16209:1: rule__XConstructorCall__Group_4_1_1__0 : rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 ;
+    public final void rule__XConstructorCall__Group_4_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16213:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
+            // InternalActionDSL.g:16214:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XConstructorCall__Group_4_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_4_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4_1_1__0"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0__Impl"
+    // InternalActionDSL.g:16221:1: rule__XConstructorCall__Group_4_1_1__0__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) ;
+    public final void rule__XConstructorCall__Group_4_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16225:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
+            // InternalActionDSL.g:16226:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            {
+            // InternalActionDSL.g:16226:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalActionDSL.g:16227:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); 
+            }
+            // InternalActionDSL.g:16228:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalActionDSL.g:16228:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__ArgumentsAssignment_4_1_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1"
+    // InternalActionDSL.g:16236:1: rule__XConstructorCall__Group_4_1_1__1 : rule__XConstructorCall__Group_4_1_1__1__Impl ;
+    public final void rule__XConstructorCall__Group_4_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16240:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
+            // InternalActionDSL.g:16241:2: rule__XConstructorCall__Group_4_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_4_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4_1_1__1"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1__Impl"
+    // InternalActionDSL.g:16247:1: rule__XConstructorCall__Group_4_1_1__1__Impl : ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) ;
+    public final void rule__XConstructorCall__Group_4_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16251:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
+            // InternalActionDSL.g:16252:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            {
+            // InternalActionDSL.g:16252:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalActionDSL.g:16253:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); 
+            }
+            // InternalActionDSL.g:16254:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            loop135:
+            do {
+                int alt135=2;
+                int LA135_0 = input.LA(1);
+
+                if ( (LA135_0==103) ) {
+                    alt135=1;
+                }
+
+
+                switch (alt135) {
+            	case 1 :
+            	    // InternalActionDSL.g:16254:3: rule__XConstructorCall__Group_4_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XConstructorCall__Group_4_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop135;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0"
+    // InternalActionDSL.g:16263:1: rule__XConstructorCall__Group_4_1_1_1__0 : rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 ;
+    public final void rule__XConstructorCall__Group_4_1_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16267:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
+            // InternalActionDSL.g:16268:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XConstructorCall__Group_4_1_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_4_1_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4_1_1_1__0"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0__Impl"
+    // InternalActionDSL.g:16275:1: rule__XConstructorCall__Group_4_1_1_1__0__Impl : ( ',' ) ;
+    public final void rule__XConstructorCall__Group_4_1_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16279:1: ( ( ',' ) )
+            // InternalActionDSL.g:16280:1: ( ',' )
+            {
+            // InternalActionDSL.g:16280:1: ( ',' )
+            // InternalActionDSL.g:16281:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4_1_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1"
+    // InternalActionDSL.g:16290:1: rule__XConstructorCall__Group_4_1_1_1__1 : rule__XConstructorCall__Group_4_1_1_1__1__Impl ;
+    public final void rule__XConstructorCall__Group_4_1_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16294:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
+            // InternalActionDSL.g:16295:2: rule__XConstructorCall__Group_4_1_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group_4_1_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4_1_1_1__1"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1__Impl"
+    // InternalActionDSL.g:16301:1: rule__XConstructorCall__Group_4_1_1_1__1__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) ;
+    public final void rule__XConstructorCall__Group_4_1_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16305:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
+            // InternalActionDSL.g:16306:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            {
+            // InternalActionDSL.g:16306:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalActionDSL.g:16307:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); 
+            }
+            // InternalActionDSL.g:16308:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalActionDSL.g:16308:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group_4_1_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__XBooleanLiteral__Group__0"
+    // InternalActionDSL.g:16317:1: rule__XBooleanLiteral__Group__0 : rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 ;
+    public final void rule__XBooleanLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16321:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
+            // InternalActionDSL.g:16322:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
+            {
+            pushFollow(FOLLOW_111);
+            rule__XBooleanLiteral__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBooleanLiteral__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBooleanLiteral__Group__0"
+
+
+    // $ANTLR start "rule__XBooleanLiteral__Group__0__Impl"
+    // InternalActionDSL.g:16329:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16333:1: ( ( () ) )
+            // InternalActionDSL.g:16334:1: ( () )
+            {
+            // InternalActionDSL.g:16334:1: ( () )
+            // InternalActionDSL.g:16335:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); 
+            }
+            // InternalActionDSL.g:16336:2: ()
+            // InternalActionDSL.g:16336:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBooleanLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XBooleanLiteral__Group__1"
+    // InternalActionDSL.g:16344:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
+    public final void rule__XBooleanLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16348:1: ( rule__XBooleanLiteral__Group__1__Impl )
+            // InternalActionDSL.g:16349:2: rule__XBooleanLiteral__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBooleanLiteral__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBooleanLiteral__Group__1"
+
+
+    // $ANTLR start "rule__XBooleanLiteral__Group__1__Impl"
+    // InternalActionDSL.g:16355:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
+    public final void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16359:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
+            // InternalActionDSL.g:16360:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            {
+            // InternalActionDSL.g:16360:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalActionDSL.g:16361:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); 
+            }
+            // InternalActionDSL.g:16362:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalActionDSL.g:16362:3: rule__XBooleanLiteral__Alternatives_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XBooleanLiteral__Alternatives_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBooleanLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XNullLiteral__Group__0"
+    // InternalActionDSL.g:16371:1: rule__XNullLiteral__Group__0 : rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 ;
+    public final void rule__XNullLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16375:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
+            // InternalActionDSL.g:16376:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
+            {
+            pushFollow(FOLLOW_112);
+            rule__XNullLiteral__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XNullLiteral__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XNullLiteral__Group__0"
+
+
+    // $ANTLR start "rule__XNullLiteral__Group__0__Impl"
+    // InternalActionDSL.g:16383:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XNullLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16387:1: ( ( () ) )
+            // InternalActionDSL.g:16388:1: ( () )
+            {
+            // InternalActionDSL.g:16388:1: ( () )
+            // InternalActionDSL.g:16389:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); 
+            }
+            // InternalActionDSL.g:16390:2: ()
+            // InternalActionDSL.g:16390:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XNullLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XNullLiteral__Group__1"
+    // InternalActionDSL.g:16398:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
+    public final void rule__XNullLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16402:1: ( rule__XNullLiteral__Group__1__Impl )
+            // InternalActionDSL.g:16403:2: rule__XNullLiteral__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XNullLiteral__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XNullLiteral__Group__1"
+
+
+    // $ANTLR start "rule__XNullLiteral__Group__1__Impl"
+    // InternalActionDSL.g:16409:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
+    public final void rule__XNullLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16413:1: ( ( 'null' ) )
+            // InternalActionDSL.g:16414:1: ( 'null' )
+            {
+            // InternalActionDSL.g:16414:1: ( 'null' )
+            // InternalActionDSL.g:16415:2: 'null'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
+            }
+            match(input,119,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XNullLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XNumberLiteral__Group__0"
+    // InternalActionDSL.g:16425:1: rule__XNumberLiteral__Group__0 : rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 ;
+    public final void rule__XNumberLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16429:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
+            // InternalActionDSL.g:16430:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
+            {
+            pushFollow(FOLLOW_113);
+            rule__XNumberLiteral__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XNumberLiteral__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XNumberLiteral__Group__0"
+
+
+    // $ANTLR start "rule__XNumberLiteral__Group__0__Impl"
+    // InternalActionDSL.g:16437:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16441:1: ( ( () ) )
+            // InternalActionDSL.g:16442:1: ( () )
+            {
+            // InternalActionDSL.g:16442:1: ( () )
+            // InternalActionDSL.g:16443:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); 
+            }
+            // InternalActionDSL.g:16444:2: ()
+            // InternalActionDSL.g:16444:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XNumberLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XNumberLiteral__Group__1"
+    // InternalActionDSL.g:16452:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
+    public final void rule__XNumberLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16456:1: ( rule__XNumberLiteral__Group__1__Impl )
+            // InternalActionDSL.g:16457:2: rule__XNumberLiteral__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XNumberLiteral__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XNumberLiteral__Group__1"
+
+
+    // $ANTLR start "rule__XNumberLiteral__Group__1__Impl"
+    // InternalActionDSL.g:16463:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
+    public final void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16467:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
+            // InternalActionDSL.g:16468:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            {
+            // InternalActionDSL.g:16468:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalActionDSL.g:16469:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); 
+            }
+            // InternalActionDSL.g:16470:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalActionDSL.g:16470:3: rule__XNumberLiteral__ValueAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XNumberLiteral__ValueAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XNumberLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XStringLiteral__Group__0"
+    // InternalActionDSL.g:16479:1: rule__XStringLiteral__Group__0 : rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 ;
+    public final void rule__XStringLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16483:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
+            // InternalActionDSL.g:16484:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
+            {
+            pushFollow(FOLLOW_14);
+            rule__XStringLiteral__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XStringLiteral__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XStringLiteral__Group__0"
+
+
+    // $ANTLR start "rule__XStringLiteral__Group__0__Impl"
+    // InternalActionDSL.g:16491:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XStringLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16495:1: ( ( () ) )
+            // InternalActionDSL.g:16496:1: ( () )
+            {
+            // InternalActionDSL.g:16496:1: ( () )
+            // InternalActionDSL.g:16497:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); 
+            }
+            // InternalActionDSL.g:16498:2: ()
+            // InternalActionDSL.g:16498:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XStringLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XStringLiteral__Group__1"
+    // InternalActionDSL.g:16506:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
+    public final void rule__XStringLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16510:1: ( rule__XStringLiteral__Group__1__Impl )
+            // InternalActionDSL.g:16511:2: rule__XStringLiteral__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XStringLiteral__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XStringLiteral__Group__1"
+
+
+    // $ANTLR start "rule__XStringLiteral__Group__1__Impl"
+    // InternalActionDSL.g:16517:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
+    public final void rule__XStringLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16521:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
+            // InternalActionDSL.g:16522:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            {
+            // InternalActionDSL.g:16522:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalActionDSL.g:16523:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); 
+            }
+            // InternalActionDSL.g:16524:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalActionDSL.g:16524:3: rule__XStringLiteral__ValueAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XStringLiteral__ValueAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XStringLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__0"
+    // InternalActionDSL.g:16533:1: rule__XTypeLiteral__Group__0 : rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 ;
+    public final void rule__XTypeLiteral__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16537:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
+            // InternalActionDSL.g:16538:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
+            {
+            pushFollow(FOLLOW_114);
+            rule__XTypeLiteral__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTypeLiteral__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__0"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__0__Impl"
+    // InternalActionDSL.g:16545:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16549:1: ( ( () ) )
+            // InternalActionDSL.g:16550:1: ( () )
+            {
+            // InternalActionDSL.g:16550:1: ( () )
+            // InternalActionDSL.g:16551:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); 
+            }
+            // InternalActionDSL.g:16552:2: ()
+            // InternalActionDSL.g:16552:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__1"
+    // InternalActionDSL.g:16560:1: rule__XTypeLiteral__Group__1 : rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 ;
+    public final void rule__XTypeLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16564:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
+            // InternalActionDSL.g:16565:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
+            {
+            pushFollow(FOLLOW_43);
+            rule__XTypeLiteral__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTypeLiteral__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__1"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__1__Impl"
+    // InternalActionDSL.g:16572:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
+    public final void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16576:1: ( ( 'typeof' ) )
+            // InternalActionDSL.g:16577:1: ( 'typeof' )
+            {
+            // InternalActionDSL.g:16577:1: ( 'typeof' )
+            // InternalActionDSL.g:16578:2: 'typeof'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
+            }
+            match(input,120,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__2"
+    // InternalActionDSL.g:16587:1: rule__XTypeLiteral__Group__2 : rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 ;
+    public final void rule__XTypeLiteral__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16591:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
+            // InternalActionDSL.g:16592:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
+            {
+            pushFollow(FOLLOW_7);
+            rule__XTypeLiteral__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTypeLiteral__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__2"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__2__Impl"
+    // InternalActionDSL.g:16599:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
+    public final void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16603:1: ( ( '(' ) )
+            // InternalActionDSL.g:16604:1: ( '(' )
+            {
+            // InternalActionDSL.g:16604:1: ( '(' )
+            // InternalActionDSL.g:16605:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__3"
+    // InternalActionDSL.g:16614:1: rule__XTypeLiteral__Group__3 : rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 ;
+    public final void rule__XTypeLiteral__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16618:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
+            // InternalActionDSL.g:16619:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
+            {
+            pushFollow(FOLLOW_115);
+            rule__XTypeLiteral__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTypeLiteral__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__3"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__3__Impl"
+    // InternalActionDSL.g:16626:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
+    public final void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16630:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
+            // InternalActionDSL.g:16631:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            {
+            // InternalActionDSL.g:16631:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalActionDSL.g:16632:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); 
+            }
+            // InternalActionDSL.g:16633:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalActionDSL.g:16633:3: rule__XTypeLiteral__TypeAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTypeLiteral__TypeAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__4"
+    // InternalActionDSL.g:16641:1: rule__XTypeLiteral__Group__4 : rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 ;
+    public final void rule__XTypeLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16645:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
+            // InternalActionDSL.g:16646:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
+            {
+            pushFollow(FOLLOW_115);
+            rule__XTypeLiteral__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTypeLiteral__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__4"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__4__Impl"
+    // InternalActionDSL.g:16653:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
+    public final void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16657:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
+            // InternalActionDSL.g:16658:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            {
+            // InternalActionDSL.g:16658:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalActionDSL.g:16659:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); 
+            }
+            // InternalActionDSL.g:16660:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            loop136:
+            do {
+                int alt136=2;
+                int LA136_0 = input.LA(1);
+
+                if ( (LA136_0==106) ) {
+                    alt136=1;
+                }
+
+
+                switch (alt136) {
+            	case 1 :
+            	    // InternalActionDSL.g:16660:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
+            	    {
+            	    pushFollow(FOLLOW_116);
+            	    rule__XTypeLiteral__ArrayDimensionsAssignment_4();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop136;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__4__Impl"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__5"
+    // InternalActionDSL.g:16668:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
+    public final void rule__XTypeLiteral__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16672:1: ( rule__XTypeLiteral__Group__5__Impl )
+            // InternalActionDSL.g:16673:2: rule__XTypeLiteral__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTypeLiteral__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__5"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__5__Impl"
+    // InternalActionDSL.g:16679:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
+    public final void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16683:1: ( ( ')' ) )
+            // InternalActionDSL.g:16684:1: ( ')' )
+            {
+            // InternalActionDSL.g:16684:1: ( ')' )
+            // InternalActionDSL.g:16685:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__5__Impl"
+
+
+    // $ANTLR start "rule__XThrowExpression__Group__0"
+    // InternalActionDSL.g:16695:1: rule__XThrowExpression__Group__0 : rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 ;
+    public final void rule__XThrowExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16699:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
+            // InternalActionDSL.g:16700:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
+            {
+            pushFollow(FOLLOW_117);
+            rule__XThrowExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XThrowExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XThrowExpression__Group__0"
+
+
+    // $ANTLR start "rule__XThrowExpression__Group__0__Impl"
+    // InternalActionDSL.g:16707:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XThrowExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16711:1: ( ( () ) )
+            // InternalActionDSL.g:16712:1: ( () )
+            {
+            // InternalActionDSL.g:16712:1: ( () )
+            // InternalActionDSL.g:16713:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:16714:2: ()
+            // InternalActionDSL.g:16714:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XThrowExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XThrowExpression__Group__1"
+    // InternalActionDSL.g:16722:1: rule__XThrowExpression__Group__1 : rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 ;
+    public final void rule__XThrowExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16726:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
+            // InternalActionDSL.g:16727:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
+            {
+            pushFollow(FOLLOW_47);
+            rule__XThrowExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XThrowExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XThrowExpression__Group__1"
+
+
+    // $ANTLR start "rule__XThrowExpression__Group__1__Impl"
+    // InternalActionDSL.g:16734:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
+    public final void rule__XThrowExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16738:1: ( ( 'throw' ) )
+            // InternalActionDSL.g:16739:1: ( 'throw' )
+            {
+            // InternalActionDSL.g:16739:1: ( 'throw' )
+            // InternalActionDSL.g:16740:2: 'throw'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
+            }
+            match(input,121,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XThrowExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XThrowExpression__Group__2"
+    // InternalActionDSL.g:16749:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
+    public final void rule__XThrowExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16753:1: ( rule__XThrowExpression__Group__2__Impl )
+            // InternalActionDSL.g:16754:2: rule__XThrowExpression__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XThrowExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XThrowExpression__Group__2"
+
+
+    // $ANTLR start "rule__XThrowExpression__Group__2__Impl"
+    // InternalActionDSL.g:16760:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
+    public final void rule__XThrowExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16764:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
+            // InternalActionDSL.g:16765:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            {
+            // InternalActionDSL.g:16765:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalActionDSL.g:16766:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalActionDSL.g:16767:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalActionDSL.g:16767:3: rule__XThrowExpression__ExpressionAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XThrowExpression__ExpressionAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XThrowExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XReturnExpression__Group__0"
+    // InternalActionDSL.g:16776:1: rule__XReturnExpression__Group__0 : rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 ;
+    public final void rule__XReturnExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16780:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
+            // InternalActionDSL.g:16781:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
+            {
+            pushFollow(FOLLOW_118);
+            rule__XReturnExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XReturnExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XReturnExpression__Group__0"
+
+
+    // $ANTLR start "rule__XReturnExpression__Group__0__Impl"
+    // InternalActionDSL.g:16788:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XReturnExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16792:1: ( ( () ) )
+            // InternalActionDSL.g:16793:1: ( () )
+            {
+            // InternalActionDSL.g:16793:1: ( () )
+            // InternalActionDSL.g:16794:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:16795:2: ()
+            // InternalActionDSL.g:16795:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XReturnExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XReturnExpression__Group__1"
+    // InternalActionDSL.g:16803:1: rule__XReturnExpression__Group__1 : rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 ;
+    public final void rule__XReturnExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16807:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
+            // InternalActionDSL.g:16808:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
+            {
+            pushFollow(FOLLOW_47);
+            rule__XReturnExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XReturnExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XReturnExpression__Group__1"
+
+
+    // $ANTLR start "rule__XReturnExpression__Group__1__Impl"
+    // InternalActionDSL.g:16815:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
+    public final void rule__XReturnExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16819:1: ( ( 'return' ) )
+            // InternalActionDSL.g:16820:1: ( 'return' )
+            {
+            // InternalActionDSL.g:16820:1: ( 'return' )
+            // InternalActionDSL.g:16821:2: 'return'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
+            }
+            match(input,122,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XReturnExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XReturnExpression__Group__2"
+    // InternalActionDSL.g:16830:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
+    public final void rule__XReturnExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16834:1: ( rule__XReturnExpression__Group__2__Impl )
+            // InternalActionDSL.g:16835:2: rule__XReturnExpression__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XReturnExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XReturnExpression__Group__2"
+
+
+    // $ANTLR start "rule__XReturnExpression__Group__2__Impl"
+    // InternalActionDSL.g:16841:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
+    public final void rule__XReturnExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16845:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
+            // InternalActionDSL.g:16846:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            {
+            // InternalActionDSL.g:16846:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalActionDSL.g:16847:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalActionDSL.g:16848:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            int alt137=2;
+            alt137 = dfa137.predict(input);
+            switch (alt137) {
+                case 1 :
+                    // InternalActionDSL.g:16848:3: rule__XReturnExpression__ExpressionAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XReturnExpression__ExpressionAssignment_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XReturnExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0"
+    // InternalActionDSL.g:16857:1: rule__XTryCatchFinallyExpression__Group__0 : rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 ;
+    public final void rule__XTryCatchFinallyExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16861:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
+            // InternalActionDSL.g:16862:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
+            {
+            pushFollow(FOLLOW_119);
+            rule__XTryCatchFinallyExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group__0"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0__Impl"
+    // InternalActionDSL.g:16869:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16873:1: ( ( () ) )
+            // InternalActionDSL.g:16874:1: ( () )
+            {
+            // InternalActionDSL.g:16874:1: ( () )
+            // InternalActionDSL.g:16875:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); 
+            }
+            // InternalActionDSL.g:16876:2: ()
+            // InternalActionDSL.g:16876:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1"
+    // InternalActionDSL.g:16884:1: rule__XTryCatchFinallyExpression__Group__1 : rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 ;
+    public final void rule__XTryCatchFinallyExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16888:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
+            // InternalActionDSL.g:16889:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
+            {
+            pushFollow(FOLLOW_47);
+            rule__XTryCatchFinallyExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group__1"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1__Impl"
+    // InternalActionDSL.g:16896:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16900:1: ( ( 'try' ) )
+            // InternalActionDSL.g:16901:1: ( 'try' )
+            {
+            // InternalActionDSL.g:16901:1: ( 'try' )
+            // InternalActionDSL.g:16902:2: 'try'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
+            }
+            match(input,123,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2"
+    // InternalActionDSL.g:16911:1: rule__XTryCatchFinallyExpression__Group__2 : rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 ;
+    public final void rule__XTryCatchFinallyExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16915:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
+            // InternalActionDSL.g:16916:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
+            {
+            pushFollow(FOLLOW_120);
+            rule__XTryCatchFinallyExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group__2"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2__Impl"
+    // InternalActionDSL.g:16923:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16927:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
+            // InternalActionDSL.g:16928:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            {
+            // InternalActionDSL.g:16928:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalActionDSL.g:16929:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalActionDSL.g:16930:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalActionDSL.g:16930:3: rule__XTryCatchFinallyExpression__ExpressionAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__ExpressionAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3"
+    // InternalActionDSL.g:16938:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
+    public final void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16942:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
+            // InternalActionDSL.g:16943:2: rule__XTryCatchFinallyExpression__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group__3"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3__Impl"
+    // InternalActionDSL.g:16949:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16953:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
+            // InternalActionDSL.g:16954:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            {
+            // InternalActionDSL.g:16954:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalActionDSL.g:16955:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); 
+            }
+            // InternalActionDSL.g:16956:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalActionDSL.g:16956:3: rule__XTryCatchFinallyExpression__Alternatives_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Alternatives_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0"
+    // InternalActionDSL.g:16965:1: rule__XTryCatchFinallyExpression__Group_3_0__0 : rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16969:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
+            // InternalActionDSL.g:16970:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
+            {
+            pushFollow(FOLLOW_121);
+            rule__XTryCatchFinallyExpression__Group_3_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group_3_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_0__0"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0__Impl"
+    // InternalActionDSL.g:16977:1: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl : ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:16981:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
+            // InternalActionDSL.g:16982:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            {
+            // InternalActionDSL.g:16982:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalActionDSL.g:16983:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            {
+            // InternalActionDSL.g:16983:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
+            // InternalActionDSL.g:16984:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+            // InternalActionDSL.g:16985:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalActionDSL.g:16985:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            {
+            pushFollow(FOLLOW_122);
+            rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+
+            }
+
+            // InternalActionDSL.g:16988:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalActionDSL.g:16989:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+            // InternalActionDSL.g:16990:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            loop138:
+            do {
+                int alt138=2;
+                int LA138_0 = input.LA(1);
+
+                if ( (LA138_0==126) ) {
+                    int LA138_2 = input.LA(2);
+
+                    if ( (synpred204_InternalActionDSL()) ) {
+                        alt138=1;
+                    }
+
+
+                }
+
+
+                switch (alt138) {
+            	case 1 :
+            	    // InternalActionDSL.g:16990:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            	    {
+            	    pushFollow(FOLLOW_122);
+            	    rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop138;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_0__0__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1"
+    // InternalActionDSL.g:16999:1: rule__XTryCatchFinallyExpression__Group_3_0__1 : rule__XTryCatchFinallyExpression__Group_3_0__1__Impl ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17003:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
+            // InternalActionDSL.g:17004:2: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group_3_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_0__1"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1__Impl"
+    // InternalActionDSL.g:17010:1: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl : ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17014:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
+            // InternalActionDSL.g:17015:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            {
+            // InternalActionDSL.g:17015:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalActionDSL.g:17016:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); 
+            }
+            // InternalActionDSL.g:17017:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            int alt139=2;
+            int LA139_0 = input.LA(1);
+
+            if ( (LA139_0==124) ) {
+                int LA139_1 = input.LA(2);
+
+                if ( (synpred205_InternalActionDSL()) ) {
+                    alt139=1;
+                }
+            }
+            switch (alt139) {
+                case 1 :
+                    // InternalActionDSL.g:17017:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XTryCatchFinallyExpression__Group_3_0_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_0__1__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0"
+    // InternalActionDSL.g:17026:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0 : rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_0_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17030:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
+            // InternalActionDSL.g:17031:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group_3_0_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_0_1__0"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl"
+    // InternalActionDSL.g:17038:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl : ( ( 'finally' ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17042:1: ( ( ( 'finally' ) ) )
+            // InternalActionDSL.g:17043:1: ( ( 'finally' ) )
+            {
+            // InternalActionDSL.g:17043:1: ( ( 'finally' ) )
+            // InternalActionDSL.g:17044:2: ( 'finally' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); 
+            }
+            // InternalActionDSL.g:17045:2: ( 'finally' )
+            // InternalActionDSL.g:17045:3: 'finally'
+            {
+            match(input,124,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1"
+    // InternalActionDSL.g:17053:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1 : rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_0_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17057:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
+            // InternalActionDSL.g:17058:2: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_0_1__1"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl"
+    // InternalActionDSL.g:17064:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17068:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
+            // InternalActionDSL.g:17069:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            {
+            // InternalActionDSL.g:17069:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalActionDSL.g:17070:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); 
+            }
+            // InternalActionDSL.g:17071:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalActionDSL.g:17071:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0"
+    // InternalActionDSL.g:17080:1: rule__XTryCatchFinallyExpression__Group_3_1__0 : rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17084:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
+            // InternalActionDSL.g:17085:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XTryCatchFinallyExpression__Group_3_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group_3_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_1__0"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0__Impl"
+    // InternalActionDSL.g:17092:1: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl : ( 'finally' ) ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17096:1: ( ( 'finally' ) )
+            // InternalActionDSL.g:17097:1: ( 'finally' )
+            {
+            // InternalActionDSL.g:17097:1: ( 'finally' )
+            // InternalActionDSL.g:17098:2: 'finally'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
+            }
+            match(input,124,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_1__0__Impl"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1"
+    // InternalActionDSL.g:17107:1: rule__XTryCatchFinallyExpression__Group_3_1__1 : rule__XTryCatchFinallyExpression__Group_3_1__1__Impl ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17111:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
+            // InternalActionDSL.g:17112:2: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__Group_3_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_1__1"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1__Impl"
+    // InternalActionDSL.g:17118:1: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group_3_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17122:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
+            // InternalActionDSL.g:17123:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            {
+            // InternalActionDSL.g:17123:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalActionDSL.g:17124:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); 
+            }
+            // InternalActionDSL.g:17125:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalActionDSL.g:17125:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__Group_3_1__1__Impl"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group__0"
+    // InternalActionDSL.g:17134:1: rule__XSynchronizedExpression__Group__0 : rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 ;
+    public final void rule__XSynchronizedExpression__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17138:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
+            // InternalActionDSL.g:17139:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__XSynchronizedExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group__0"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group__0__Impl"
+    // InternalActionDSL.g:17146:1: rule__XSynchronizedExpression__Group__0__Impl : ( ( rule__XSynchronizedExpression__Group_0__0 ) ) ;
+    public final void rule__XSynchronizedExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17150:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
+            // InternalActionDSL.g:17151:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            {
+            // InternalActionDSL.g:17151:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalActionDSL.g:17152:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); 
+            }
+            // InternalActionDSL.g:17153:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalActionDSL.g:17153:3: rule__XSynchronizedExpression__Group_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group__1"
+    // InternalActionDSL.g:17161:1: rule__XSynchronizedExpression__Group__1 : rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 ;
+    public final void rule__XSynchronizedExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17165:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
+            // InternalActionDSL.g:17166:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
+            {
+            pushFollow(FOLLOW_92);
+            rule__XSynchronizedExpression__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group__1"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group__1__Impl"
+    // InternalActionDSL.g:17173:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
+    public final void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17177:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
+            // InternalActionDSL.g:17178:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            {
+            // InternalActionDSL.g:17178:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalActionDSL.g:17179:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); 
+            }
+            // InternalActionDSL.g:17180:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalActionDSL.g:17180:3: rule__XSynchronizedExpression__ParamAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__ParamAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group__2"
+    // InternalActionDSL.g:17188:1: rule__XSynchronizedExpression__Group__2 : rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 ;
+    public final void rule__XSynchronizedExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17192:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
+            // InternalActionDSL.g:17193:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
+            {
+            pushFollow(FOLLOW_47);
+            rule__XSynchronizedExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group__2"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group__2__Impl"
+    // InternalActionDSL.g:17200:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17204:1: ( ( ')' ) )
+            // InternalActionDSL.g:17205:1: ( ')' )
+            {
+            // InternalActionDSL.g:17205:1: ( ')' )
+            // InternalActionDSL.g:17206:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group__3"
+    // InternalActionDSL.g:17215:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
+    public final void rule__XSynchronizedExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17219:1: ( rule__XSynchronizedExpression__Group__3__Impl )
+            // InternalActionDSL.g:17220:2: rule__XSynchronizedExpression__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group__3"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group__3__Impl"
+    // InternalActionDSL.g:17226:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
+    public final void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17230:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
+            // InternalActionDSL.g:17231:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            {
+            // InternalActionDSL.g:17231:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalActionDSL.g:17232:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); 
+            }
+            // InternalActionDSL.g:17233:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalActionDSL.g:17233:3: rule__XSynchronizedExpression__ExpressionAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__ExpressionAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group_0__0"
+    // InternalActionDSL.g:17242:1: rule__XSynchronizedExpression__Group_0__0 : rule__XSynchronizedExpression__Group_0__0__Impl ;
+    public final void rule__XSynchronizedExpression__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17246:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
+            // InternalActionDSL.g:17247:2: rule__XSynchronizedExpression__Group_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group_0__0"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group_0__0__Impl"
+    // InternalActionDSL.g:17253:1: rule__XSynchronizedExpression__Group_0__0__Impl : ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) ;
+    public final void rule__XSynchronizedExpression__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17257:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
+            // InternalActionDSL.g:17258:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            {
+            // InternalActionDSL.g:17258:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalActionDSL.g:17259:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); 
+            }
+            // InternalActionDSL.g:17260:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalActionDSL.g:17260:3: rule__XSynchronizedExpression__Group_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0"
+    // InternalActionDSL.g:17269:1: rule__XSynchronizedExpression__Group_0_0__0 : rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 ;
+    public final void rule__XSynchronizedExpression__Group_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17273:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
+            // InternalActionDSL.g:17274:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
+            {
+            pushFollow(FOLLOW_123);
+            rule__XSynchronizedExpression__Group_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group_0_0__0"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0__Impl"
+    // InternalActionDSL.g:17281:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17285:1: ( ( () ) )
+            // InternalActionDSL.g:17286:1: ( () )
+            {
+            // InternalActionDSL.g:17286:1: ( () )
+            // InternalActionDSL.g:17287:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); 
+            }
+            // InternalActionDSL.g:17288:2: ()
+            // InternalActionDSL.g:17288:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1"
+    // InternalActionDSL.g:17296:1: rule__XSynchronizedExpression__Group_0_0__1 : rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 ;
+    public final void rule__XSynchronizedExpression__Group_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17300:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
+            // InternalActionDSL.g:17301:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
+            {
+            pushFollow(FOLLOW_43);
+            rule__XSynchronizedExpression__Group_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group_0_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group_0_0__1"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1__Impl"
+    // InternalActionDSL.g:17308:1: rule__XSynchronizedExpression__Group_0_0__1__Impl : ( 'synchronized' ) ;
+    public final void rule__XSynchronizedExpression__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17312:1: ( ( 'synchronized' ) )
+            // InternalActionDSL.g:17313:1: ( 'synchronized' )
+            {
+            // InternalActionDSL.g:17313:1: ( 'synchronized' )
+            // InternalActionDSL.g:17314:2: 'synchronized'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
+            }
+            match(input,125,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2"
+    // InternalActionDSL.g:17323:1: rule__XSynchronizedExpression__Group_0_0__2 : rule__XSynchronizedExpression__Group_0_0__2__Impl ;
+    public final void rule__XSynchronizedExpression__Group_0_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17327:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
+            // InternalActionDSL.g:17328:2: rule__XSynchronizedExpression__Group_0_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XSynchronizedExpression__Group_0_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group_0_0__2"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2__Impl"
+    // InternalActionDSL.g:17334:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
+    public final void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17338:1: ( ( '(' ) )
+            // InternalActionDSL.g:17339:1: ( '(' )
+            {
+            // InternalActionDSL.g:17339:1: ( '(' )
+            // InternalActionDSL.g:17340:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__Group_0_0__2__Impl"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__0"
+    // InternalActionDSL.g:17350:1: rule__XCatchClause__Group__0 : rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 ;
+    public final void rule__XCatchClause__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17354:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
+            // InternalActionDSL.g:17355:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
+            {
+            pushFollow(FOLLOW_43);
+            rule__XCatchClause__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCatchClause__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__0"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__0__Impl"
+    // InternalActionDSL.g:17362:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
+    public final void rule__XCatchClause__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17366:1: ( ( ( 'catch' ) ) )
+            // InternalActionDSL.g:17367:1: ( ( 'catch' ) )
+            {
+            // InternalActionDSL.g:17367:1: ( ( 'catch' ) )
+            // InternalActionDSL.g:17368:2: ( 'catch' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); 
+            }
+            // InternalActionDSL.g:17369:2: ( 'catch' )
+            // InternalActionDSL.g:17369:3: 'catch'
+            {
+            match(input,126,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__1"
+    // InternalActionDSL.g:17377:1: rule__XCatchClause__Group__1 : rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 ;
+    public final void rule__XCatchClause__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17381:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
+            // InternalActionDSL.g:17382:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
+            {
+            pushFollow(FOLLOW_64);
+            rule__XCatchClause__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCatchClause__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__1"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__1__Impl"
+    // InternalActionDSL.g:17389:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
+    public final void rule__XCatchClause__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17393:1: ( ( '(' ) )
+            // InternalActionDSL.g:17394:1: ( '(' )
+            {
+            // InternalActionDSL.g:17394:1: ( '(' )
+            // InternalActionDSL.g:17395:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__2"
+    // InternalActionDSL.g:17404:1: rule__XCatchClause__Group__2 : rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 ;
+    public final void rule__XCatchClause__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17408:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
+            // InternalActionDSL.g:17409:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
+            {
+            pushFollow(FOLLOW_92);
+            rule__XCatchClause__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCatchClause__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__2"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__2__Impl"
+    // InternalActionDSL.g:17416:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
+    public final void rule__XCatchClause__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17420:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
+            // InternalActionDSL.g:17421:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            {
+            // InternalActionDSL.g:17421:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalActionDSL.g:17422:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); 
+            }
+            // InternalActionDSL.g:17423:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalActionDSL.g:17423:3: rule__XCatchClause__DeclaredParamAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCatchClause__DeclaredParamAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__3"
+    // InternalActionDSL.g:17431:1: rule__XCatchClause__Group__3 : rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 ;
+    public final void rule__XCatchClause__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17435:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
+            // InternalActionDSL.g:17436:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
+            {
+            pushFollow(FOLLOW_47);
+            rule__XCatchClause__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XCatchClause__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__3"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__3__Impl"
+    // InternalActionDSL.g:17443:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
+    public final void rule__XCatchClause__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17447:1: ( ( ')' ) )
+            // InternalActionDSL.g:17448:1: ( ')' )
+            {
+            // InternalActionDSL.g:17448:1: ( ')' )
+            // InternalActionDSL.g:17449:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__3__Impl"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__4"
+    // InternalActionDSL.g:17458:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
+    public final void rule__XCatchClause__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17462:1: ( rule__XCatchClause__Group__4__Impl )
+            // InternalActionDSL.g:17463:2: rule__XCatchClause__Group__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCatchClause__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__4"
+
+
+    // $ANTLR start "rule__XCatchClause__Group__4__Impl"
+    // InternalActionDSL.g:17469:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
+    public final void rule__XCatchClause__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17473:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
+            // InternalActionDSL.g:17474:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            {
+            // InternalActionDSL.g:17474:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalActionDSL.g:17475:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); 
+            }
+            // InternalActionDSL.g:17476:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalActionDSL.g:17476:3: rule__XCatchClause__ExpressionAssignment_4
+            {
+            pushFollow(FOLLOW_2);
+            rule__XCatchClause__ExpressionAssignment_4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__Group__4__Impl"
+
+
+    // $ANTLR start "rule__QualifiedName__Group__0"
+    // InternalActionDSL.g:17485:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ;
+    public final void rule__QualifiedName__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17489:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
+            // InternalActionDSL.g:17490:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
+            {
+            pushFollow(FOLLOW_124);
+            rule__QualifiedName__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__QualifiedName__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedName__Group__0"
+
+
+    // $ANTLR start "rule__QualifiedName__Group__0__Impl"
+    // InternalActionDSL.g:17497:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedName__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17501:1: ( ( ruleValidID ) )
+            // InternalActionDSL.g:17502:1: ( ruleValidID )
+            {
+            // InternalActionDSL.g:17502:1: ( ruleValidID )
+            // InternalActionDSL.g:17503:2: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedName__Group__0__Impl"
+
+
+    // $ANTLR start "rule__QualifiedName__Group__1"
+    // InternalActionDSL.g:17512:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
+    public final void rule__QualifiedName__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17516:1: ( rule__QualifiedName__Group__1__Impl )
+            // InternalActionDSL.g:17517:2: rule__QualifiedName__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__QualifiedName__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedName__Group__1"
+
+
+    // $ANTLR start "rule__QualifiedName__Group__1__Impl"
+    // InternalActionDSL.g:17523:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ;
+    public final void rule__QualifiedName__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17527:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
+            // InternalActionDSL.g:17528:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            {
+            // InternalActionDSL.g:17528:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalActionDSL.g:17529:2: ( rule__QualifiedName__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:17530:2: ( rule__QualifiedName__Group_1__0 )*
+            loop140:
+            do {
+                int alt140=2;
+                int LA140_0 = input.LA(1);
+
+                if ( (LA140_0==45) ) {
+                    int LA140_2 = input.LA(2);
+
+                    if ( (LA140_2==RULE_ID) ) {
+                        int LA140_3 = input.LA(3);
+
+                        if ( (synpred206_InternalActionDSL()) ) {
+                            alt140=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt140) {
+            	case 1 :
+            	    // InternalActionDSL.g:17530:3: rule__QualifiedName__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_125);
+            	    rule__QualifiedName__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop140;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedName__Group__1__Impl"
+
+
+    // $ANTLR start "rule__QualifiedName__Group_1__0"
+    // InternalActionDSL.g:17539:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ;
+    public final void rule__QualifiedName__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17543:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
+            // InternalActionDSL.g:17544:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__QualifiedName__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__QualifiedName__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedName__Group_1__0"
+
+
+    // $ANTLR start "rule__QualifiedName__Group_1__0__Impl"
+    // InternalActionDSL.g:17551:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
+    public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17555:1: ( ( ( '.' ) ) )
+            // InternalActionDSL.g:17556:1: ( ( '.' ) )
+            {
+            // InternalActionDSL.g:17556:1: ( ( '.' ) )
+            // InternalActionDSL.g:17557:2: ( '.' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
+            }
+            // InternalActionDSL.g:17558:2: ( '.' )
+            // InternalActionDSL.g:17558:3: '.'
+            {
+            match(input,45,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedName__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__QualifiedName__Group_1__1"
+    // InternalActionDSL.g:17566:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ;
+    public final void rule__QualifiedName__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17570:1: ( rule__QualifiedName__Group_1__1__Impl )
+            // InternalActionDSL.g:17571:2: rule__QualifiedName__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__QualifiedName__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedName__Group_1__1"
+
+
+    // $ANTLR start "rule__QualifiedName__Group_1__1__Impl"
+    // InternalActionDSL.g:17577:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17581:1: ( ( ruleValidID ) )
+            // InternalActionDSL.g:17582:1: ( ruleValidID )
+            {
+            // InternalActionDSL.g:17582:1: ( ruleValidID )
+            // InternalActionDSL.g:17583:2: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedName__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__Number__Group_1__0"
+    // InternalActionDSL.g:17593:1: rule__Number__Group_1__0 : rule__Number__Group_1__0__Impl rule__Number__Group_1__1 ;
+    public final void rule__Number__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17597:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
+            // InternalActionDSL.g:17598:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
+            {
+            pushFollow(FOLLOW_124);
+            rule__Number__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Number__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Group_1__0"
+
+
+    // $ANTLR start "rule__Number__Group_1__0__Impl"
+    // InternalActionDSL.g:17605:1: rule__Number__Group_1__0__Impl : ( ( rule__Number__Alternatives_1_0 ) ) ;
+    public final void rule__Number__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17609:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
+            // InternalActionDSL.g:17610:1: ( ( rule__Number__Alternatives_1_0 ) )
+            {
+            // InternalActionDSL.g:17610:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalActionDSL.g:17611:2: ( rule__Number__Alternatives_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives_1_0()); 
+            }
+            // InternalActionDSL.g:17612:2: ( rule__Number__Alternatives_1_0 )
+            // InternalActionDSL.g:17612:3: rule__Number__Alternatives_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Number__Alternatives_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberAccess().getAlternatives_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__Number__Group_1__1"
+    // InternalActionDSL.g:17620:1: rule__Number__Group_1__1 : rule__Number__Group_1__1__Impl ;
+    public final void rule__Number__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17624:1: ( rule__Number__Group_1__1__Impl )
+            // InternalActionDSL.g:17625:2: rule__Number__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Number__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Group_1__1"
+
+
+    // $ANTLR start "rule__Number__Group_1__1__Impl"
+    // InternalActionDSL.g:17631:1: rule__Number__Group_1__1__Impl : ( ( rule__Number__Group_1_1__0 )? ) ;
+    public final void rule__Number__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17635:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
+            // InternalActionDSL.g:17636:1: ( ( rule__Number__Group_1_1__0 )? )
+            {
+            // InternalActionDSL.g:17636:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalActionDSL.g:17637:2: ( rule__Number__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getGroup_1_1()); 
+            }
+            // InternalActionDSL.g:17638:2: ( rule__Number__Group_1_1__0 )?
+            int alt141=2;
+            int LA141_0 = input.LA(1);
+
+            if ( (LA141_0==45) ) {
+                int LA141_1 = input.LA(2);
+
+                if ( ((LA141_1>=RULE_INT && LA141_1<=RULE_DECIMAL)) ) {
+                    alt141=1;
+                }
+            }
+            switch (alt141) {
+                case 1 :
+                    // InternalActionDSL.g:17638:3: rule__Number__Group_1_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Number__Group_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberAccess().getGroup_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__Number__Group_1_1__0"
+    // InternalActionDSL.g:17647:1: rule__Number__Group_1_1__0 : rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 ;
+    public final void rule__Number__Group_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17651:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
+            // InternalActionDSL.g:17652:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
+            {
+            pushFollow(FOLLOW_126);
+            rule__Number__Group_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Number__Group_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Group_1_1__0"
+
+
+    // $ANTLR start "rule__Number__Group_1_1__0__Impl"
+    // InternalActionDSL.g:17659:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
+    public final void rule__Number__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17663:1: ( ( '.' ) )
+            // InternalActionDSL.g:17664:1: ( '.' )
+            {
+            // InternalActionDSL.g:17664:1: ( '.' )
+            // InternalActionDSL.g:17665:2: '.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
+            }
+            match(input,45,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Group_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__Number__Group_1_1__1"
+    // InternalActionDSL.g:17674:1: rule__Number__Group_1_1__1 : rule__Number__Group_1_1__1__Impl ;
+    public final void rule__Number__Group_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17678:1: ( rule__Number__Group_1_1__1__Impl )
+            // InternalActionDSL.g:17679:2: rule__Number__Group_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Number__Group_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Group_1_1__1"
+
+
+    // $ANTLR start "rule__Number__Group_1_1__1__Impl"
+    // InternalActionDSL.g:17685:1: rule__Number__Group_1_1__1__Impl : ( ( rule__Number__Alternatives_1_1_1 ) ) ;
+    public final void rule__Number__Group_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17689:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
+            // InternalActionDSL.g:17690:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            {
+            // InternalActionDSL.g:17690:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalActionDSL.g:17691:2: ( rule__Number__Alternatives_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); 
+            }
+            // InternalActionDSL.g:17692:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalActionDSL.g:17692:3: rule__Number__Alternatives_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Number__Alternatives_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Number__Group_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0__0"
+    // InternalActionDSL.g:17701:1: rule__JvmTypeReference__Group_0__0 : rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 ;
+    public final void rule__JvmTypeReference__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17705:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
+            // InternalActionDSL.g:17706:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
+            {
+            pushFollow(FOLLOW_51);
+            rule__JvmTypeReference__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmTypeReference__Group_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0__0"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0__0__Impl"
+    // InternalActionDSL.g:17713:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
+    public final void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17717:1: ( ( ruleJvmParameterizedTypeReference ) )
+            // InternalActionDSL.g:17718:1: ( ruleJvmParameterizedTypeReference )
+            {
+            // InternalActionDSL.g:17718:1: ( ruleJvmParameterizedTypeReference )
+            // InternalActionDSL.g:17719:2: ruleJvmParameterizedTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmParameterizedTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0__1"
+    // InternalActionDSL.g:17728:1: rule__JvmTypeReference__Group_0__1 : rule__JvmTypeReference__Group_0__1__Impl ;
+    public final void rule__JvmTypeReference__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17732:1: ( rule__JvmTypeReference__Group_0__1__Impl )
+            // InternalActionDSL.g:17733:2: rule__JvmTypeReference__Group_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmTypeReference__Group_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0__1"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0__1__Impl"
+    // InternalActionDSL.g:17739:1: rule__JvmTypeReference__Group_0__1__Impl : ( ( rule__JvmTypeReference__Group_0_1__0 )* ) ;
+    public final void rule__JvmTypeReference__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17743:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
+            // InternalActionDSL.g:17744:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            {
+            // InternalActionDSL.g:17744:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalActionDSL.g:17745:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); 
+            }
+            // InternalActionDSL.g:17746:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            loop142:
+            do {
+                int alt142=2;
+                int LA142_0 = input.LA(1);
+
+                if ( (LA142_0==106) ) {
+                    int LA142_2 = input.LA(2);
+
+                    if ( (LA142_2==104) ) {
+                        int LA142_3 = input.LA(3);
+
+                        if ( (synpred208_InternalActionDSL()) ) {
+                            alt142=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt142) {
+            	case 1 :
+            	    // InternalActionDSL.g:17746:3: rule__JvmTypeReference__Group_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_116);
+            	    rule__JvmTypeReference__Group_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop142;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0_1__0"
+    // InternalActionDSL.g:17755:1: rule__JvmTypeReference__Group_0_1__0 : rule__JvmTypeReference__Group_0_1__0__Impl ;
+    public final void rule__JvmTypeReference__Group_0_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17759:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
+            // InternalActionDSL.g:17760:2: rule__JvmTypeReference__Group_0_1__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmTypeReference__Group_0_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0_1__0"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0_1__0__Impl"
+    // InternalActionDSL.g:17766:1: rule__JvmTypeReference__Group_0_1__0__Impl : ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) ;
+    public final void rule__JvmTypeReference__Group_0_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17770:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
+            // InternalActionDSL.g:17771:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            {
+            // InternalActionDSL.g:17771:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalActionDSL.g:17772:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); 
+            }
+            // InternalActionDSL.g:17773:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalActionDSL.g:17773:3: rule__JvmTypeReference__Group_0_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmTypeReference__Group_0_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0_1__0__Impl"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0"
+    // InternalActionDSL.g:17782:1: rule__JvmTypeReference__Group_0_1_0__0 : rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 ;
+    public final void rule__JvmTypeReference__Group_0_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17786:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
+            // InternalActionDSL.g:17787:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
+            {
+            pushFollow(FOLLOW_51);
+            rule__JvmTypeReference__Group_0_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmTypeReference__Group_0_1_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0_1_0__0"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0__Impl"
+    // InternalActionDSL.g:17794:1: rule__JvmTypeReference__Group_0_1_0__0__Impl : ( () ) ;
+    public final void rule__JvmTypeReference__Group_0_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17798:1: ( ( () ) )
+            // InternalActionDSL.g:17799:1: ( () )
+            {
+            // InternalActionDSL.g:17799:1: ( () )
+            // InternalActionDSL.g:17800:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); 
+            }
+            // InternalActionDSL.g:17801:2: ()
+            // InternalActionDSL.g:17801:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1"
+    // InternalActionDSL.g:17809:1: rule__JvmTypeReference__Group_0_1_0__1 : rule__JvmTypeReference__Group_0_1_0__1__Impl ;
+    public final void rule__JvmTypeReference__Group_0_1_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17813:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
+            // InternalActionDSL.g:17814:2: rule__JvmTypeReference__Group_0_1_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmTypeReference__Group_0_1_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0_1_0__1"
+
+
+    // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1__Impl"
+    // InternalActionDSL.g:17820:1: rule__JvmTypeReference__Group_0_1_0__1__Impl : ( ruleArrayBrackets ) ;
+    public final void rule__JvmTypeReference__Group_0_1_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17824:1: ( ( ruleArrayBrackets ) )
+            // InternalActionDSL.g:17825:1: ( ruleArrayBrackets )
+            {
+            // InternalActionDSL.g:17825:1: ( ruleArrayBrackets )
+            // InternalActionDSL.g:17826:2: ruleArrayBrackets
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleArrayBrackets();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmTypeReference__Group_0_1_0__1__Impl"
+
+
+    // $ANTLR start "rule__ArrayBrackets__Group__0"
+    // InternalActionDSL.g:17836:1: rule__ArrayBrackets__Group__0 : rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 ;
+    public final void rule__ArrayBrackets__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17840:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
+            // InternalActionDSL.g:17841:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
+            {
+            pushFollow(FOLLOW_89);
+            rule__ArrayBrackets__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ArrayBrackets__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ArrayBrackets__Group__0"
+
+
+    // $ANTLR start "rule__ArrayBrackets__Group__0__Impl"
+    // InternalActionDSL.g:17848:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
+    public final void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17852:1: ( ( '[' ) )
+            // InternalActionDSL.g:17853:1: ( '[' )
+            {
+            // InternalActionDSL.g:17853:1: ( '[' )
+            // InternalActionDSL.g:17854:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
+            }
+            match(input,106,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ArrayBrackets__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ArrayBrackets__Group__1"
+    // InternalActionDSL.g:17863:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
+    public final void rule__ArrayBrackets__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17867:1: ( rule__ArrayBrackets__Group__1__Impl )
+            // InternalActionDSL.g:17868:2: rule__ArrayBrackets__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ArrayBrackets__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ArrayBrackets__Group__1"
+
+
+    // $ANTLR start "rule__ArrayBrackets__Group__1__Impl"
+    // InternalActionDSL.g:17874:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
+    public final void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17878:1: ( ( ']' ) )
+            // InternalActionDSL.g:17879:1: ( ']' )
+            {
+            // InternalActionDSL.g:17879:1: ( ']' )
+            // InternalActionDSL.g:17880:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
+            }
+            match(input,104,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ArrayBrackets__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group__0"
+    // InternalActionDSL.g:17890:1: rule__XFunctionTypeRef__Group__0 : rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 ;
+    public final void rule__XFunctionTypeRef__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17894:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
+            // InternalActionDSL.g:17895:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__XFunctionTypeRef__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group__0"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group__0__Impl"
+    // InternalActionDSL.g:17902:1: rule__XFunctionTypeRef__Group__0__Impl : ( ( rule__XFunctionTypeRef__Group_0__0 )? ) ;
+    public final void rule__XFunctionTypeRef__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17906:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
+            // InternalActionDSL.g:17907:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            {
+            // InternalActionDSL.g:17907:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalActionDSL.g:17908:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); 
+            }
+            // InternalActionDSL.g:17909:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            int alt143=2;
+            int LA143_0 = input.LA(1);
+
+            if ( (LA143_0==101) ) {
+                alt143=1;
+            }
+            switch (alt143) {
+                case 1 :
+                    // InternalActionDSL.g:17909:3: rule__XFunctionTypeRef__Group_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XFunctionTypeRef__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group__0__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group__1"
+    // InternalActionDSL.g:17917:1: rule__XFunctionTypeRef__Group__1 : rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 ;
+    public final void rule__XFunctionTypeRef__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17921:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
+            // InternalActionDSL.g:17922:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
+            {
+            pushFollow(FOLLOW_64);
+            rule__XFunctionTypeRef__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group__1"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group__1__Impl"
+    // InternalActionDSL.g:17929:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
+    public final void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17933:1: ( ( '=>' ) )
+            // InternalActionDSL.g:17934:1: ( '=>' )
+            {
+            // InternalActionDSL.g:17934:1: ( '=>' )
+            // InternalActionDSL.g:17935:2: '=>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1()); 
+            }
+            match(input,33,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group__2"
+    // InternalActionDSL.g:17944:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
+    public final void rule__XFunctionTypeRef__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17948:1: ( rule__XFunctionTypeRef__Group__2__Impl )
+            // InternalActionDSL.g:17949:2: rule__XFunctionTypeRef__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group__2"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group__2__Impl"
+    // InternalActionDSL.g:17955:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
+    public final void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17959:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
+            // InternalActionDSL.g:17960:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            {
+            // InternalActionDSL.g:17960:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalActionDSL.g:17961:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); 
+            }
+            // InternalActionDSL.g:17962:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalActionDSL.g:17962:3: rule__XFunctionTypeRef__ReturnTypeAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__ReturnTypeAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group__2__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0__0"
+    // InternalActionDSL.g:17971:1: rule__XFunctionTypeRef__Group_0__0 : rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 ;
+    public final void rule__XFunctionTypeRef__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17975:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
+            // InternalActionDSL.g:17976:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
+            {
+            pushFollow(FOLLOW_127);
+            rule__XFunctionTypeRef__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0__0"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0__0__Impl"
+    // InternalActionDSL.g:17983:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
+    public final void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:17987:1: ( ( '(' ) )
+            // InternalActionDSL.g:17988:1: ( '(' )
+            {
+            // InternalActionDSL.g:17988:1: ( '(' )
+            // InternalActionDSL.g:17989:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0__1"
+    // InternalActionDSL.g:17998:1: rule__XFunctionTypeRef__Group_0__1 : rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 ;
+    public final void rule__XFunctionTypeRef__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18002:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
+            // InternalActionDSL.g:18003:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
+            {
+            pushFollow(FOLLOW_127);
+            rule__XFunctionTypeRef__Group_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0__1"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0__1__Impl"
+    // InternalActionDSL.g:18010:1: rule__XFunctionTypeRef__Group_0__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) ;
+    public final void rule__XFunctionTypeRef__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18014:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
+            // InternalActionDSL.g:18015:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            {
+            // InternalActionDSL.g:18015:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalActionDSL.g:18016:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); 
+            }
+            // InternalActionDSL.g:18017:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            int alt144=2;
+            int LA144_0 = input.LA(1);
+
+            if ( (LA144_0==RULE_ID||LA144_0==33||LA144_0==101) ) {
+                alt144=1;
+            }
+            switch (alt144) {
+                case 1 :
+                    // InternalActionDSL.g:18017:3: rule__XFunctionTypeRef__Group_0_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__XFunctionTypeRef__Group_0_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0__2"
+    // InternalActionDSL.g:18025:1: rule__XFunctionTypeRef__Group_0__2 : rule__XFunctionTypeRef__Group_0__2__Impl ;
+    public final void rule__XFunctionTypeRef__Group_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18029:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
+            // InternalActionDSL.g:18030:2: rule__XFunctionTypeRef__Group_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0__2"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0__2__Impl"
+    // InternalActionDSL.g:18036:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
+    public final void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18040:1: ( ( ')' ) )
+            // InternalActionDSL.g:18041:1: ( ')' )
+            {
+            // InternalActionDSL.g:18041:1: ( ')' )
+            // InternalActionDSL.g:18042:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
+            }
+            match(input,102,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0__2__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0"
+    // InternalActionDSL.g:18052:1: rule__XFunctionTypeRef__Group_0_1__0 : rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 ;
+    public final void rule__XFunctionTypeRef__Group_0_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18056:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
+            // InternalActionDSL.g:18057:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
+            {
+            pushFollow(FOLLOW_45);
+            rule__XFunctionTypeRef__Group_0_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group_0_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0_1__0"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0__Impl"
+    // InternalActionDSL.g:18064:1: rule__XFunctionTypeRef__Group_0_1__0__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) ;
+    public final void rule__XFunctionTypeRef__Group_0_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18068:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
+            // InternalActionDSL.g:18069:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            {
+            // InternalActionDSL.g:18069:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalActionDSL.g:18070:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); 
+            }
+            // InternalActionDSL.g:18071:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalActionDSL.g:18071:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0_1__0__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1"
+    // InternalActionDSL.g:18079:1: rule__XFunctionTypeRef__Group_0_1__1 : rule__XFunctionTypeRef__Group_0_1__1__Impl ;
+    public final void rule__XFunctionTypeRef__Group_0_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18083:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
+            // InternalActionDSL.g:18084:2: rule__XFunctionTypeRef__Group_0_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group_0_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0_1__1"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1__Impl"
+    // InternalActionDSL.g:18090:1: rule__XFunctionTypeRef__Group_0_1__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) ;
+    public final void rule__XFunctionTypeRef__Group_0_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18094:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
+            // InternalActionDSL.g:18095:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            {
+            // InternalActionDSL.g:18095:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalActionDSL.g:18096:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); 
+            }
+            // InternalActionDSL.g:18097:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            loop145:
+            do {
+                int alt145=2;
+                int LA145_0 = input.LA(1);
+
+                if ( (LA145_0==103) ) {
+                    alt145=1;
+                }
+
+
+                switch (alt145) {
+            	case 1 :
+            	    // InternalActionDSL.g:18097:3: rule__XFunctionTypeRef__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__XFunctionTypeRef__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop145;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0_1__1__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0"
+    // InternalActionDSL.g:18106:1: rule__XFunctionTypeRef__Group_0_1_1__0 : rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 ;
+    public final void rule__XFunctionTypeRef__Group_0_1_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18110:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
+            // InternalActionDSL.g:18111:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__XFunctionTypeRef__Group_0_1_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group_0_1_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0_1_1__0"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0__Impl"
+    // InternalActionDSL.g:18118:1: rule__XFunctionTypeRef__Group_0_1_1__0__Impl : ( ',' ) ;
+    public final void rule__XFunctionTypeRef__Group_0_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18122:1: ( ( ',' ) )
+            // InternalActionDSL.g:18123:1: ( ',' )
+            {
+            // InternalActionDSL.g:18123:1: ( ',' )
+            // InternalActionDSL.g:18124:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0_1_1__0__Impl"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1"
+    // InternalActionDSL.g:18133:1: rule__XFunctionTypeRef__Group_0_1_1__1 : rule__XFunctionTypeRef__Group_0_1_1__1__Impl ;
+    public final void rule__XFunctionTypeRef__Group_0_1_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18137:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
+            // InternalActionDSL.g:18138:2: rule__XFunctionTypeRef__Group_0_1_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__Group_0_1_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0_1_1__1"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1__Impl"
+    // InternalActionDSL.g:18144:1: rule__XFunctionTypeRef__Group_0_1_1__1__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) ;
+    public final void rule__XFunctionTypeRef__Group_0_1_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18148:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
+            // InternalActionDSL.g:18149:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            {
+            // InternalActionDSL.g:18149:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalActionDSL.g:18150:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); 
+            }
+            // InternalActionDSL.g:18151:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalActionDSL.g:18151:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__Group_0_1_1__1__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0"
+    // InternalActionDSL.g:18160:1: rule__JvmParameterizedTypeReference__Group__0 : rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 ;
+    public final void rule__JvmParameterizedTypeReference__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18164:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
+            // InternalActionDSL.g:18165:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
+            {
+            pushFollow(FOLLOW_54);
+            rule__JvmParameterizedTypeReference__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group__0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0__Impl"
+    // InternalActionDSL.g:18172:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18176:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
+            // InternalActionDSL.g:18177:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            {
+            // InternalActionDSL.g:18177:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalActionDSL.g:18178:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); 
+            }
+            // InternalActionDSL.g:18179:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalActionDSL.g:18179:3: rule__JvmParameterizedTypeReference__TypeAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__TypeAssignment_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group__0__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1"
+    // InternalActionDSL.g:18187:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18191:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
+            // InternalActionDSL.g:18192:2: rule__JvmParameterizedTypeReference__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group__1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1__Impl"
+    // InternalActionDSL.g:18198:1: rule__JvmParameterizedTypeReference__Group__1__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) ;
+    public final void rule__JvmParameterizedTypeReference__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18202:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
+            // InternalActionDSL.g:18203:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            {
+            // InternalActionDSL.g:18203:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalActionDSL.g:18204:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); 
+            }
+            // InternalActionDSL.g:18205:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            int alt146=2;
+            alt146 = dfa146.predict(input);
+            switch (alt146) {
+                case 1 :
+                    // InternalActionDSL.g:18205:3: rule__JvmParameterizedTypeReference__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__JvmParameterizedTypeReference__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group__1__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0"
+    // InternalActionDSL.g:18214:1: rule__JvmParameterizedTypeReference__Group_1__0 : rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18218:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
+            // InternalActionDSL.g:18219:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__JvmParameterizedTypeReference__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0__Impl"
+    // InternalActionDSL.g:18226:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18230:1: ( ( ( '<' ) ) )
+            // InternalActionDSL.g:18231:1: ( ( '<' ) )
+            {
+            // InternalActionDSL.g:18231:1: ( ( '<' ) )
+            // InternalActionDSL.g:18232:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); 
+            }
+            // InternalActionDSL.g:18233:2: ( '<' )
+            // InternalActionDSL.g:18233:3: '<'
+            {
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1"
+    // InternalActionDSL.g:18241:1: rule__JvmParameterizedTypeReference__Group_1__1 : rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18245:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
+            // InternalActionDSL.g:18246:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
+            {
+            pushFollow(FOLLOW_85);
+            rule__JvmParameterizedTypeReference__Group_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1__Impl"
+    // InternalActionDSL.g:18253:1: rule__JvmParameterizedTypeReference__Group_1__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18257:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
+            // InternalActionDSL.g:18258:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            {
+            // InternalActionDSL.g:18258:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalActionDSL.g:18259:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); 
+            }
+            // InternalActionDSL.g:18260:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalActionDSL.g:18260:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2"
+    // InternalActionDSL.g:18268:1: rule__JvmParameterizedTypeReference__Group_1__2 : rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18272:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
+            // InternalActionDSL.g:18273:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
+            {
+            pushFollow(FOLLOW_85);
+            rule__JvmParameterizedTypeReference__Group_1__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__2"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2__Impl"
+    // InternalActionDSL.g:18280:1: rule__JvmParameterizedTypeReference__Group_1__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18284:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
+            // InternalActionDSL.g:18285:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            {
+            // InternalActionDSL.g:18285:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalActionDSL.g:18286:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); 
+            }
+            // InternalActionDSL.g:18287:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            loop147:
+            do {
+                int alt147=2;
+                int LA147_0 = input.LA(1);
+
+                if ( (LA147_0==103) ) {
+                    alt147=1;
+                }
+
+
+                switch (alt147) {
+            	case 1 :
+            	    // InternalActionDSL.g:18287:3: rule__JvmParameterizedTypeReference__Group_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__JvmParameterizedTypeReference__Group_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop147;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__2__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3"
+    // InternalActionDSL.g:18295:1: rule__JvmParameterizedTypeReference__Group_1__3 : rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18299:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
+            // InternalActionDSL.g:18300:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
+            {
+            pushFollow(FOLLOW_124);
+            rule__JvmParameterizedTypeReference__Group_1__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__3"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3__Impl"
+    // InternalActionDSL.g:18307:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18311:1: ( ( '>' ) )
+            // InternalActionDSL.g:18312:1: ( '>' )
+            {
+            // InternalActionDSL.g:18312:1: ( '>' )
+            // InternalActionDSL.g:18313:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__3__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4"
+    // InternalActionDSL.g:18322:1: rule__JvmParameterizedTypeReference__Group_1__4 : rule__JvmParameterizedTypeReference__Group_1__4__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18326:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
+            // InternalActionDSL.g:18327:2: rule__JvmParameterizedTypeReference__Group_1__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__4"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4__Impl"
+    // InternalActionDSL.g:18333:1: rule__JvmParameterizedTypeReference__Group_1__4__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18337:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
+            // InternalActionDSL.g:18338:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            {
+            // InternalActionDSL.g:18338:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalActionDSL.g:18339:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); 
+            }
+            // InternalActionDSL.g:18340:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            loop148:
+            do {
+                int alt148=2;
+                int LA148_0 = input.LA(1);
+
+                if ( (LA148_0==45) ) {
+                    int LA148_2 = input.LA(2);
+
+                    if ( (LA148_2==RULE_ID) ) {
+                        int LA148_3 = input.LA(3);
+
+                        if ( (synpred214_InternalActionDSL()) ) {
+                            alt148=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt148) {
+            	case 1 :
+            	    // InternalActionDSL.g:18340:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+            	    {
+            	    pushFollow(FOLLOW_125);
+            	    rule__JvmParameterizedTypeReference__Group_1_4__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop148;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1__4__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0"
+    // InternalActionDSL.g:18349:1: rule__JvmParameterizedTypeReference__Group_1_2__0 : rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18353:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
+            // InternalActionDSL.g:18354:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__JvmParameterizedTypeReference__Group_1_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_2__0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0__Impl"
+    // InternalActionDSL.g:18361:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18365:1: ( ( ',' ) )
+            // InternalActionDSL.g:18366:1: ( ',' )
+            {
+            // InternalActionDSL.g:18366:1: ( ',' )
+            // InternalActionDSL.g:18367:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_2__0__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1"
+    // InternalActionDSL.g:18376:1: rule__JvmParameterizedTypeReference__Group_1_2__1 : rule__JvmParameterizedTypeReference__Group_1_2__1__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18380:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
+            // InternalActionDSL.g:18381:2: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_2__1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1__Impl"
+    // InternalActionDSL.g:18387:1: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18391:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
+            // InternalActionDSL.g:18392:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            {
+            // InternalActionDSL.g:18392:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalActionDSL.g:18393:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); 
+            }
+            // InternalActionDSL.g:18394:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalActionDSL.g:18394:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_2__1__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0"
+    // InternalActionDSL.g:18403:1: rule__JvmParameterizedTypeReference__Group_1_4__0 : rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18407:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
+            // InternalActionDSL.g:18408:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__JvmParameterizedTypeReference__Group_1_4__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4__0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0__Impl"
+    // InternalActionDSL.g:18415:1: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18419:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
+            // InternalActionDSL.g:18420:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            {
+            // InternalActionDSL.g:18420:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalActionDSL.g:18421:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); 
+            }
+            // InternalActionDSL.g:18422:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalActionDSL.g:18422:3: rule__JvmParameterizedTypeReference__Group_1_4_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4__0__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1"
+    // InternalActionDSL.g:18430:1: rule__JvmParameterizedTypeReference__Group_1_4__1 : rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18434:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
+            // InternalActionDSL.g:18435:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
+            {
+            pushFollow(FOLLOW_54);
+            rule__JvmParameterizedTypeReference__Group_1_4__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4__1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1__Impl"
+    // InternalActionDSL.g:18442:1: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18446:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
+            // InternalActionDSL.g:18447:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            {
+            // InternalActionDSL.g:18447:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalActionDSL.g:18448:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); 
+            }
+            // InternalActionDSL.g:18449:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalActionDSL.g:18449:3: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4__1__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2"
+    // InternalActionDSL.g:18457:1: rule__JvmParameterizedTypeReference__Group_1_4__2 : rule__JvmParameterizedTypeReference__Group_1_4__2__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18461:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
+            // InternalActionDSL.g:18462:2: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4__2"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2__Impl"
+    // InternalActionDSL.g:18468:1: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18472:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
+            // InternalActionDSL.g:18473:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            {
+            // InternalActionDSL.g:18473:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalActionDSL.g:18474:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); 
+            }
+            // InternalActionDSL.g:18475:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            int alt149=2;
+            alt149 = dfa149.predict(input);
+            switch (alt149) {
+                case 1 :
+                    // InternalActionDSL.g:18475:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__JvmParameterizedTypeReference__Group_1_4_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4__2__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0"
+    // InternalActionDSL.g:18484:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18488:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
+            // InternalActionDSL.g:18489:2: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_0__0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl"
+    // InternalActionDSL.g:18495:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18499:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
+            // InternalActionDSL.g:18500:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            {
+            // InternalActionDSL.g:18500:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalActionDSL.g:18501:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); 
+            }
+            // InternalActionDSL.g:18502:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalActionDSL.g:18502:3: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_0_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0"
+    // InternalActionDSL.g:18511:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18515:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
+            // InternalActionDSL.g:18516:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+            {
+            pushFollow(FOLLOW_124);
+            rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl"
+    // InternalActionDSL.g:18523:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl : ( () ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18527:1: ( ( () ) )
+            // InternalActionDSL.g:18528:1: ( () )
+            {
+            // InternalActionDSL.g:18528:1: ( () )
+            // InternalActionDSL.g:18529:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); 
+            }
+            // InternalActionDSL.g:18530:2: ()
+            // InternalActionDSL.g:18530:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1"
+    // InternalActionDSL.g:18538:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18542:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
+            // InternalActionDSL.g:18543:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl"
+    // InternalActionDSL.g:18549:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl : ( '.' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18553:1: ( ( '.' ) )
+            // InternalActionDSL.g:18554:1: ( '.' )
+            {
+            // InternalActionDSL.g:18554:1: ( '.' )
+            // InternalActionDSL.g:18555:2: '.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1()); 
+            }
+            match(input,45,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0"
+    // InternalActionDSL.g:18565:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18569:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
+            // InternalActionDSL.g:18570:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2__0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl"
+    // InternalActionDSL.g:18577:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl : ( ( '<' ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18581:1: ( ( ( '<' ) ) )
+            // InternalActionDSL.g:18582:1: ( ( '<' ) )
+            {
+            // InternalActionDSL.g:18582:1: ( ( '<' ) )
+            // InternalActionDSL.g:18583:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); 
+            }
+            // InternalActionDSL.g:18584:2: ( '<' )
+            // InternalActionDSL.g:18584:3: '<'
+            {
+            match(input,29,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1"
+    // InternalActionDSL.g:18592:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18596:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
+            // InternalActionDSL.g:18597:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
+            {
+            pushFollow(FOLLOW_85);
+            rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_2__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2__1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl"
+    // InternalActionDSL.g:18604:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18608:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
+            // InternalActionDSL.g:18609:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            {
+            // InternalActionDSL.g:18609:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalActionDSL.g:18610:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); 
+            }
+            // InternalActionDSL.g:18611:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalActionDSL.g:18611:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2"
+    // InternalActionDSL.g:18619:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2 : rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18623:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
+            // InternalActionDSL.g:18624:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
+            {
+            pushFollow(FOLLOW_85);
+            rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_2__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2__2"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl"
+    // InternalActionDSL.g:18631:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18635:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
+            // InternalActionDSL.g:18636:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            {
+            // InternalActionDSL.g:18636:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalActionDSL.g:18637:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); 
+            }
+            // InternalActionDSL.g:18638:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            loop150:
+            do {
+                int alt150=2;
+                int LA150_0 = input.LA(1);
+
+                if ( (LA150_0==103) ) {
+                    alt150=1;
+                }
+
+
+                switch (alt150) {
+            	case 1 :
+            	    // InternalActionDSL.g:18638:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
+            	    {
+            	    pushFollow(FOLLOW_46);
+            	    rule__JvmParameterizedTypeReference__Group_1_4_2_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop150;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3"
+    // InternalActionDSL.g:18646:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3 : rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18650:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
+            // InternalActionDSL.g:18651:2: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2__3"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl"
+    // InternalActionDSL.g:18657:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl : ( '>' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18661:1: ( ( '>' ) )
+            // InternalActionDSL.g:18662:1: ( '>' )
+            {
+            // InternalActionDSL.g:18662:1: ( '>' )
+            // InternalActionDSL.g:18663:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3()); 
+            }
+            match(input,28,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0"
+    // InternalActionDSL.g:18673:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18677:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
+            // InternalActionDSL.g:18678:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_2_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl"
+    // InternalActionDSL.g:18685:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl : ( ',' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18689:1: ( ( ',' ) )
+            // InternalActionDSL.g:18690:1: ( ',' )
+            {
+            // InternalActionDSL.g:18690:1: ( ',' )
+            // InternalActionDSL.g:18691:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1"
+    // InternalActionDSL.g:18700:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18704:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
+            // InternalActionDSL.g:18705:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl"
+    // InternalActionDSL.g:18711:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18715:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
+            // InternalActionDSL.g:18716:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            {
+            // InternalActionDSL.g:18716:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalActionDSL.g:18717:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); 
+            }
+            // InternalActionDSL.g:18718:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalActionDSL.g:18718:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group__0"
+    // InternalActionDSL.g:18727:1: rule__JvmWildcardTypeReference__Group__0 : rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 ;
+    public final void rule__JvmWildcardTypeReference__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18731:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
+            // InternalActionDSL.g:18732:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
+            {
+            pushFollow(FOLLOW_84);
+            rule__JvmWildcardTypeReference__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group__0"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group__0__Impl"
+    // InternalActionDSL.g:18739:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
+    public final void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18743:1: ( ( () ) )
+            // InternalActionDSL.g:18744:1: ( () )
+            {
+            // InternalActionDSL.g:18744:1: ( () )
+            // InternalActionDSL.g:18745:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); 
+            }
+            // InternalActionDSL.g:18746:2: ()
+            // InternalActionDSL.g:18746:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group__0__Impl"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group__1"
+    // InternalActionDSL.g:18754:1: rule__JvmWildcardTypeReference__Group__1 : rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 ;
+    public final void rule__JvmWildcardTypeReference__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18758:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
+            // InternalActionDSL.g:18759:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
+            {
+            pushFollow(FOLLOW_128);
+            rule__JvmWildcardTypeReference__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group__1"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group__1__Impl"
+    // InternalActionDSL.g:18766:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
+    public final void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18770:1: ( ( '?' ) )
+            // InternalActionDSL.g:18771:1: ( '?' )
+            {
+            // InternalActionDSL.g:18771:1: ( '?' )
+            // InternalActionDSL.g:18772:2: '?'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
+            }
+            match(input,127,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group__1__Impl"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group__2"
+    // InternalActionDSL.g:18781:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
+    public final void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18785:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
+            // InternalActionDSL.g:18786:2: rule__JvmWildcardTypeReference__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group__2"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group__2__Impl"
+    // InternalActionDSL.g:18792:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
+    public final void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18796:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
+            // InternalActionDSL.g:18797:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            {
+            // InternalActionDSL.g:18797:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalActionDSL.g:18798:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); 
+            }
+            // InternalActionDSL.g:18799:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            int alt151=2;
+            int LA151_0 = input.LA(1);
+
+            if ( (LA151_0==47||LA151_0==51) ) {
+                alt151=1;
+            }
+            switch (alt151) {
+                case 1 :
+                    // InternalActionDSL.g:18799:3: rule__JvmWildcardTypeReference__Alternatives_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__JvmWildcardTypeReference__Alternatives_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group__2__Impl"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0"
+    // InternalActionDSL.g:18808:1: rule__JvmWildcardTypeReference__Group_2_0__0 : rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 ;
+    public final void rule__JvmWildcardTypeReference__Group_2_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18812:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
+            // InternalActionDSL.g:18813:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
+            {
+            pushFollow(FOLLOW_129);
+            rule__JvmWildcardTypeReference__Group_2_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__Group_2_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group_2_0__0"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0__Impl"
+    // InternalActionDSL.g:18820:1: rule__JvmWildcardTypeReference__Group_2_0__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) ;
+    public final void rule__JvmWildcardTypeReference__Group_2_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18824:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
+            // InternalActionDSL.g:18825:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            {
+            // InternalActionDSL.g:18825:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalActionDSL.g:18826:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); 
+            }
+            // InternalActionDSL.g:18827:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalActionDSL.g:18827:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group_2_0__0__Impl"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1"
+    // InternalActionDSL.g:18835:1: rule__JvmWildcardTypeReference__Group_2_0__1 : rule__JvmWildcardTypeReference__Group_2_0__1__Impl ;
+    public final void rule__JvmWildcardTypeReference__Group_2_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18839:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
+            // InternalActionDSL.g:18840:2: rule__JvmWildcardTypeReference__Group_2_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__Group_2_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group_2_0__1"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1__Impl"
+    // InternalActionDSL.g:18846:1: rule__JvmWildcardTypeReference__Group_2_0__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) ;
+    public final void rule__JvmWildcardTypeReference__Group_2_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18850:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
+            // InternalActionDSL.g:18851:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            {
+            // InternalActionDSL.g:18851:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalActionDSL.g:18852:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); 
+            }
+            // InternalActionDSL.g:18853:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            loop152:
+            do {
+                int alt152=2;
+                int LA152_0 = input.LA(1);
+
+                if ( (LA152_0==128) ) {
+                    alt152=1;
+                }
+
+
+                switch (alt152) {
+            	case 1 :
+            	    // InternalActionDSL.g:18853:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
+            	    {
+            	    pushFollow(FOLLOW_130);
+            	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop152;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group_2_0__1__Impl"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0"
+    // InternalActionDSL.g:18862:1: rule__JvmWildcardTypeReference__Group_2_1__0 : rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 ;
+    public final void rule__JvmWildcardTypeReference__Group_2_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18866:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
+            // InternalActionDSL.g:18867:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
+            {
+            pushFollow(FOLLOW_129);
+            rule__JvmWildcardTypeReference__Group_2_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__Group_2_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group_2_1__0"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0__Impl"
+    // InternalActionDSL.g:18874:1: rule__JvmWildcardTypeReference__Group_2_1__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) ;
+    public final void rule__JvmWildcardTypeReference__Group_2_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18878:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
+            // InternalActionDSL.g:18879:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            {
+            // InternalActionDSL.g:18879:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalActionDSL.g:18880:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); 
+            }
+            // InternalActionDSL.g:18881:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalActionDSL.g:18881:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group_2_1__0__Impl"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1"
+    // InternalActionDSL.g:18889:1: rule__JvmWildcardTypeReference__Group_2_1__1 : rule__JvmWildcardTypeReference__Group_2_1__1__Impl ;
+    public final void rule__JvmWildcardTypeReference__Group_2_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18893:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
+            // InternalActionDSL.g:18894:2: rule__JvmWildcardTypeReference__Group_2_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmWildcardTypeReference__Group_2_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group_2_1__1"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1__Impl"
+    // InternalActionDSL.g:18900:1: rule__JvmWildcardTypeReference__Group_2_1__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) ;
+    public final void rule__JvmWildcardTypeReference__Group_2_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18904:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
+            // InternalActionDSL.g:18905:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            {
+            // InternalActionDSL.g:18905:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalActionDSL.g:18906:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); 
+            }
+            // InternalActionDSL.g:18907:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            loop153:
+            do {
+                int alt153=2;
+                int LA153_0 = input.LA(1);
+
+                if ( (LA153_0==128) ) {
+                    alt153=1;
+                }
+
+
+                switch (alt153) {
+            	case 1 :
+            	    // InternalActionDSL.g:18907:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
+            	    {
+            	    pushFollow(FOLLOW_130);
+            	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop153;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__Group_2_1__1__Impl"
+
+
+    // $ANTLR start "rule__JvmUpperBound__Group__0"
+    // InternalActionDSL.g:18916:1: rule__JvmUpperBound__Group__0 : rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 ;
+    public final void rule__JvmUpperBound__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18920:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
+            // InternalActionDSL.g:18921:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__JvmUpperBound__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmUpperBound__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBound__Group__0"
+
+
+    // $ANTLR start "rule__JvmUpperBound__Group__0__Impl"
+    // InternalActionDSL.g:18928:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
+    public final void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18932:1: ( ( 'extends' ) )
+            // InternalActionDSL.g:18933:1: ( 'extends' )
+            {
+            // InternalActionDSL.g:18933:1: ( 'extends' )
+            // InternalActionDSL.g:18934:2: 'extends'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0()); 
+            }
+            match(input,47,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBound__Group__0__Impl"
+
+
+    // $ANTLR start "rule__JvmUpperBound__Group__1"
+    // InternalActionDSL.g:18943:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
+    public final void rule__JvmUpperBound__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18947:1: ( rule__JvmUpperBound__Group__1__Impl )
+            // InternalActionDSL.g:18948:2: rule__JvmUpperBound__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmUpperBound__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBound__Group__1"
+
+
+    // $ANTLR start "rule__JvmUpperBound__Group__1__Impl"
+    // InternalActionDSL.g:18954:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18958:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
+            // InternalActionDSL.g:18959:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            {
+            // InternalActionDSL.g:18959:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalActionDSL.g:18960:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalActionDSL.g:18961:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalActionDSL.g:18961:3: rule__JvmUpperBound__TypeReferenceAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmUpperBound__TypeReferenceAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBound__Group__1__Impl"
+
+
+    // $ANTLR start "rule__JvmUpperBoundAnded__Group__0"
+    // InternalActionDSL.g:18970:1: rule__JvmUpperBoundAnded__Group__0 : rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 ;
+    public final void rule__JvmUpperBoundAnded__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18974:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
+            // InternalActionDSL.g:18975:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__JvmUpperBoundAnded__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmUpperBoundAnded__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBoundAnded__Group__0"
+
+
+    // $ANTLR start "rule__JvmUpperBoundAnded__Group__0__Impl"
+    // InternalActionDSL.g:18982:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
+    public final void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:18986:1: ( ( '&' ) )
+            // InternalActionDSL.g:18987:1: ( '&' )
+            {
+            // InternalActionDSL.g:18987:1: ( '&' )
+            // InternalActionDSL.g:18988:2: '&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+            match(input,128,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBoundAnded__Group__0__Impl"
+
+
+    // $ANTLR start "rule__JvmUpperBoundAnded__Group__1"
+    // InternalActionDSL.g:18997:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
+    public final void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19001:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
+            // InternalActionDSL.g:19002:2: rule__JvmUpperBoundAnded__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmUpperBoundAnded__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBoundAnded__Group__1"
+
+
+    // $ANTLR start "rule__JvmUpperBoundAnded__Group__1__Impl"
+    // InternalActionDSL.g:19008:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19012:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalActionDSL.g:19013:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            {
+            // InternalActionDSL.g:19013:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalActionDSL.g:19014:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalActionDSL.g:19015:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalActionDSL.g:19015:3: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmUpperBoundAnded__TypeReferenceAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBoundAnded__Group__1__Impl"
+
+
+    // $ANTLR start "rule__JvmLowerBound__Group__0"
+    // InternalActionDSL.g:19024:1: rule__JvmLowerBound__Group__0 : rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 ;
+    public final void rule__JvmLowerBound__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19028:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
+            // InternalActionDSL.g:19029:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__JvmLowerBound__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmLowerBound__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBound__Group__0"
+
+
+    // $ANTLR start "rule__JvmLowerBound__Group__0__Impl"
+    // InternalActionDSL.g:19036:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
+    public final void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19040:1: ( ( 'super' ) )
+            // InternalActionDSL.g:19041:1: ( 'super' )
+            {
+            // InternalActionDSL.g:19041:1: ( 'super' )
+            // InternalActionDSL.g:19042:2: 'super'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0()); 
+            }
+            match(input,51,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBound__Group__0__Impl"
+
+
+    // $ANTLR start "rule__JvmLowerBound__Group__1"
+    // InternalActionDSL.g:19051:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
+    public final void rule__JvmLowerBound__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19055:1: ( rule__JvmLowerBound__Group__1__Impl )
+            // InternalActionDSL.g:19056:2: rule__JvmLowerBound__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmLowerBound__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBound__Group__1"
+
+
+    // $ANTLR start "rule__JvmLowerBound__Group__1__Impl"
+    // InternalActionDSL.g:19062:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19066:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
+            // InternalActionDSL.g:19067:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            {
+            // InternalActionDSL.g:19067:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalActionDSL.g:19068:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalActionDSL.g:19069:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalActionDSL.g:19069:3: rule__JvmLowerBound__TypeReferenceAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmLowerBound__TypeReferenceAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBound__Group__1__Impl"
+
+
+    // $ANTLR start "rule__JvmLowerBoundAnded__Group__0"
+    // InternalActionDSL.g:19078:1: rule__JvmLowerBoundAnded__Group__0 : rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 ;
+    public final void rule__JvmLowerBoundAnded__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19082:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
+            // InternalActionDSL.g:19083:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            rule__JvmLowerBoundAnded__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmLowerBoundAnded__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBoundAnded__Group__0"
+
+
+    // $ANTLR start "rule__JvmLowerBoundAnded__Group__0__Impl"
+    // InternalActionDSL.g:19090:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
+    public final void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19094:1: ( ( '&' ) )
+            // InternalActionDSL.g:19095:1: ( '&' )
+            {
+            // InternalActionDSL.g:19095:1: ( '&' )
+            // InternalActionDSL.g:19096:2: '&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+            match(input,128,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBoundAnded__Group__0__Impl"
+
+
+    // $ANTLR start "rule__JvmLowerBoundAnded__Group__1"
+    // InternalActionDSL.g:19105:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
+    public final void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19109:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
+            // InternalActionDSL.g:19110:2: rule__JvmLowerBoundAnded__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmLowerBoundAnded__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBoundAnded__Group__1"
+
+
+    // $ANTLR start "rule__JvmLowerBoundAnded__Group__1__Impl"
+    // InternalActionDSL.g:19116:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19120:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalActionDSL.g:19121:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            {
+            // InternalActionDSL.g:19121:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalActionDSL.g:19122:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalActionDSL.g:19123:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalActionDSL.g:19123:3: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__JvmLowerBoundAnded__TypeReferenceAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBoundAnded__Group__1__Impl"
+
+
+    // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0"
+    // InternalActionDSL.g:19132:1: rule__QualifiedNameWithWildcard__Group__0 : rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 ;
+    public final void rule__QualifiedNameWithWildcard__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19136:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
+            // InternalActionDSL.g:19137:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
+            {
+            pushFollow(FOLLOW_124);
+            rule__QualifiedNameWithWildcard__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__QualifiedNameWithWildcard__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameWithWildcard__Group__0"
+
+
+    // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0__Impl"
+    // InternalActionDSL.g:19144:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19148:1: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:19149:1: ( ruleQualifiedName )
+            {
+            // InternalActionDSL.g:19149:1: ( ruleQualifiedName )
+            // InternalActionDSL.g:19150:2: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameWithWildcard__Group__0__Impl"
+
+
+    // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1"
+    // InternalActionDSL.g:19159:1: rule__QualifiedNameWithWildcard__Group__1 : rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 ;
+    public final void rule__QualifiedNameWithWildcard__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19163:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
+            // InternalActionDSL.g:19164:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
+            {
+            pushFollow(FOLLOW_131);
+            rule__QualifiedNameWithWildcard__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__QualifiedNameWithWildcard__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameWithWildcard__Group__1"
+
+
+    // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1__Impl"
+    // InternalActionDSL.g:19171:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19175:1: ( ( '.' ) )
+            // InternalActionDSL.g:19176:1: ( '.' )
+            {
+            // InternalActionDSL.g:19176:1: ( '.' )
+            // InternalActionDSL.g:19177:2: '.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
+            }
+            match(input,45,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameWithWildcard__Group__1__Impl"
+
+
+    // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2"
+    // InternalActionDSL.g:19186:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
+    public final void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19190:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
+            // InternalActionDSL.g:19191:2: rule__QualifiedNameWithWildcard__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__QualifiedNameWithWildcard__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameWithWildcard__Group__2"
+
+
+    // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2__Impl"
+    // InternalActionDSL.g:19197:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19201:1: ( ( '*' ) )
+            // InternalActionDSL.g:19202:1: ( '*' )
+            {
+            // InternalActionDSL.g:19202:1: ( '*' )
+            // InternalActionDSL.g:19203:2: '*'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
+            }
+            match(input,38,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameWithWildcard__Group__2__Impl"
+
+
+    // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0"
+    // InternalActionDSL.g:19213:1: rule__QualifiedNameInStaticImport__Group__0 : rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 ;
+    public final void rule__QualifiedNameInStaticImport__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19217:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
+            // InternalActionDSL.g:19218:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
+            {
+            pushFollow(FOLLOW_124);
+            rule__QualifiedNameInStaticImport__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__QualifiedNameInStaticImport__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameInStaticImport__Group__0"
+
+
+    // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0__Impl"
+    // InternalActionDSL.g:19225:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19229:1: ( ( ruleValidID ) )
+            // InternalActionDSL.g:19230:1: ( ruleValidID )
+            {
+            // InternalActionDSL.g:19230:1: ( ruleValidID )
+            // InternalActionDSL.g:19231:2: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameInStaticImport__Group__0__Impl"
+
+
+    // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1"
+    // InternalActionDSL.g:19240:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
+    public final void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19244:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
+            // InternalActionDSL.g:19245:2: rule__QualifiedNameInStaticImport__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__QualifiedNameInStaticImport__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameInStaticImport__Group__1"
+
+
+    // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1__Impl"
+    // InternalActionDSL.g:19251:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
+    public final void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19255:1: ( ( '.' ) )
+            // InternalActionDSL.g:19256:1: ( '.' )
+            {
+            // InternalActionDSL.g:19256:1: ( '.' )
+            // InternalActionDSL.g:19257:2: '.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
+            }
+            match(input,45,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedNameInStaticImport__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ActionModel__ImportSectionAssignment_0"
+    // InternalActionDSL.g:19267:1: rule__ActionModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
+    public final void rule__ActionModel__ImportSectionAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19271:1: ( ( ruleXImportSection ) )
+            // InternalActionDSL.g:19272:2: ( ruleXImportSection )
+            {
+            // InternalActionDSL.g:19272:2: ( ruleXImportSection )
+            // InternalActionDSL.g:19273:3: ruleXImportSection
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXImportSection();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionModel__ImportSectionAssignment_0"
+
+
+    // $ANTLR start "rule__ActionModel__PackagesAssignment_1"
+    // InternalActionDSL.g:19282:1: rule__ActionModel__PackagesAssignment_1 : ( ruleActionPackage ) ;
+    public final void rule__ActionModel__PackagesAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19286:1: ( ( ruleActionPackage ) )
+            // InternalActionDSL.g:19287:2: ( ruleActionPackage )
+            {
+            // InternalActionDSL.g:19287:2: ( ruleActionPackage )
+            // InternalActionDSL.g:19288:3: ruleActionPackage
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionModelAccess().getPackagesActionPackageParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleActionPackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionModelAccess().getPackagesActionPackageParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionModel__PackagesAssignment_1"
+
+
+    // $ANTLR start "rule__ActionPackage__NameAssignment_2"
+    // InternalActionDSL.g:19297:1: rule__ActionPackage__NameAssignment_2 : ( ruleQualifiedName ) ;
+    public final void rule__ActionPackage__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19301:1: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:19302:2: ( ruleQualifiedName )
+            {
+            // InternalActionDSL.g:19302:2: ( ruleQualifiedName )
+            // InternalActionDSL.g:19303:3: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__NameAssignment_2"
+
+
+    // $ANTLR start "rule__ActionPackage__CommandsAssignment_3_1"
+    // InternalActionDSL.g:19312:1: rule__ActionPackage__CommandsAssignment_3_1 : ( ruleActionCommand ) ;
+    public final void rule__ActionPackage__CommandsAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19316:1: ( ( ruleActionCommand ) )
+            // InternalActionDSL.g:19317:2: ( ruleActionCommand )
+            {
+            // InternalActionDSL.g:19317:2: ( ruleActionCommand )
+            // InternalActionDSL.g:19318:3: ruleActionCommand
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getCommandsActionCommandParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleActionCommand();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getCommandsActionCommandParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__CommandsAssignment_3_1"
+
+
+    // $ANTLR start "rule__ActionPackage__ToolbarsAssignment_3_2"
+    // InternalActionDSL.g:19327:1: rule__ActionPackage__ToolbarsAssignment_3_2 : ( ruleActionToolbar ) ;
+    public final void rule__ActionPackage__ToolbarsAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19331:1: ( ( ruleActionToolbar ) )
+            // InternalActionDSL.g:19332:2: ( ruleActionToolbar )
+            {
+            // InternalActionDSL.g:19332:2: ( ruleActionToolbar )
+            // InternalActionDSL.g:19333:3: ruleActionToolbar
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionPackageAccess().getToolbarsActionToolbarParserRuleCall_3_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleActionToolbar();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionPackageAccess().getToolbarsActionToolbarParserRuleCall_3_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionPackage__ToolbarsAssignment_3_2"
+
+
+    // $ANTLR start "rule__ActionCommand__NameAssignment_2"
+    // InternalActionDSL.g:19342:1: rule__ActionCommand__NameAssignment_2 : ( RULE_ID ) ;
+    public final void rule__ActionCommand__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19346:1: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19347:2: ( RULE_ID )
+            {
+            // InternalActionDSL.g:19347:2: ( RULE_ID )
+            // InternalActionDSL.g:19348:3: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getNameIDTerminalRuleCall_2_0()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getNameIDTerminalRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__NameAssignment_2"
+
+
+    // $ANTLR start "rule__ActionCommand__HasDescriptionAssignment_3_0"
+    // InternalActionDSL.g:19357:1: rule__ActionCommand__HasDescriptionAssignment_3_0 : ( ( 'describedBy' ) ) ;
+    public final void rule__ActionCommand__HasDescriptionAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19361:1: ( ( ( 'describedBy' ) ) )
+            // InternalActionDSL.g:19362:2: ( ( 'describedBy' ) )
+            {
+            // InternalActionDSL.g:19362:2: ( ( 'describedBy' ) )
+            // InternalActionDSL.g:19363:3: ( 'describedBy' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            // InternalActionDSL.g:19364:3: ( 'describedBy' )
+            // InternalActionDSL.g:19365:4: 'describedBy'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            match(input,129,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__HasDescriptionAssignment_3_0"
+
+
+    // $ANTLR start "rule__ActionCommand__DescriptionAssignment_3_1"
+    // InternalActionDSL.g:19376:1: rule__ActionCommand__DescriptionAssignment_3_1 : ( ruleTRANSLATABLESTRING ) ;
+    public final void rule__ActionCommand__DescriptionAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19380:1: ( ( ruleTRANSLATABLESTRING ) )
+            // InternalActionDSL.g:19381:2: ( ruleTRANSLATABLESTRING )
+            {
+            // InternalActionDSL.g:19381:2: ( ruleTRANSLATABLESTRING )
+            // InternalActionDSL.g:19382:3: ruleTRANSLATABLESTRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getDescriptionTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getDescriptionTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__DescriptionAssignment_3_1"
+
+
+    // $ANTLR start "rule__ActionCommand__HasKeyBindingAssignment_4_0"
+    // InternalActionDSL.g:19391:1: rule__ActionCommand__HasKeyBindingAssignment_4_0 : ( ( 'keyBinding' ) ) ;
+    public final void rule__ActionCommand__HasKeyBindingAssignment_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19395:1: ( ( ( 'keyBinding' ) ) )
+            // InternalActionDSL.g:19396:2: ( ( 'keyBinding' ) )
+            {
+            // InternalActionDSL.g:19396:2: ( ( 'keyBinding' ) )
+            // InternalActionDSL.g:19397:3: ( 'keyBinding' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0()); 
+            }
+            // InternalActionDSL.g:19398:3: ( 'keyBinding' )
+            // InternalActionDSL.g:19399:4: 'keyBinding'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0()); 
+            }
+            match(input,130,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__HasKeyBindingAssignment_4_0"
+
+
+    // $ANTLR start "rule__ActionCommand__KeyBindingAssignment_4_1"
+    // InternalActionDSL.g:19410:1: rule__ActionCommand__KeyBindingAssignment_4_1 : ( RULE_STRING ) ;
+    public final void rule__ActionCommand__KeyBindingAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19414:1: ( ( RULE_STRING ) )
+            // InternalActionDSL.g:19415:2: ( RULE_STRING )
+            {
+            // InternalActionDSL.g:19415:2: ( RULE_STRING )
+            // InternalActionDSL.g:19416:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getKeyBindingSTRINGTerminalRuleCall_4_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getKeyBindingSTRINGTerminalRuleCall_4_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__KeyBindingAssignment_4_1"
+
+
+    // $ANTLR start "rule__ActionCommand__ActionTypeAssignment_5"
+    // InternalActionDSL.g:19425:1: rule__ActionCommand__ActionTypeAssignment_5 : ( ruleActionType ) ;
+    public final void rule__ActionCommand__ActionTypeAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19429:1: ( ( ruleActionType ) )
+            // InternalActionDSL.g:19430:2: ( ruleActionType )
+            {
+            // InternalActionDSL.g:19430:2: ( ruleActionType )
+            // InternalActionDSL.g:19431:3: ruleActionType
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionCommandAccess().getActionTypeActionTypeParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleActionType();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionCommandAccess().getActionTypeActionTypeParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionCommand__ActionTypeAssignment_5"
+
+
+    // $ANTLR start "rule__ActionToolbar__NameAssignment_2"
+    // InternalActionDSL.g:19440:1: rule__ActionToolbar__NameAssignment_2 : ( RULE_ID ) ;
+    public final void rule__ActionToolbar__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19444:1: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19445:2: ( RULE_ID )
+            {
+            // InternalActionDSL.g:19445:2: ( RULE_ID )
+            // InternalActionDSL.g:19446:3: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getNameIDTerminalRuleCall_2_0()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getNameIDTerminalRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__NameAssignment_2"
+
+
+    // $ANTLR start "rule__ActionToolbar__DescriptionAssignment_3_0"
+    // InternalActionDSL.g:19455:1: rule__ActionToolbar__DescriptionAssignment_3_0 : ( ( 'describedBy' ) ) ;
+    public final void rule__ActionToolbar__DescriptionAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19459:1: ( ( ( 'describedBy' ) ) )
+            // InternalActionDSL.g:19460:2: ( ( 'describedBy' ) )
+            {
+            // InternalActionDSL.g:19460:2: ( ( 'describedBy' ) )
+            // InternalActionDSL.g:19461:3: ( 'describedBy' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            // InternalActionDSL.g:19462:3: ( 'describedBy' )
+            // InternalActionDSL.g:19463:4: 'describedBy'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            match(input,129,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__DescriptionAssignment_3_0"
+
+
+    // $ANTLR start "rule__ActionToolbar__DescriptionValueAssignment_3_1"
+    // InternalActionDSL.g:19474:1: rule__ActionToolbar__DescriptionValueAssignment_3_1 : ( ruleTRANSLATABLESTRING ) ;
+    public final void rule__ActionToolbar__DescriptionValueAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19478:1: ( ( ruleTRANSLATABLESTRING ) )
+            // InternalActionDSL.g:19479:2: ( ruleTRANSLATABLESTRING )
+            {
+            // InternalActionDSL.g:19479:2: ( ruleTRANSLATABLESTRING )
+            // InternalActionDSL.g:19480:3: ruleTRANSLATABLESTRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__DescriptionValueAssignment_3_1"
+
+
+    // $ANTLR start "rule__ActionToolbar__ActionsAssignment_4_2"
+    // InternalActionDSL.g:19489:1: rule__ActionToolbar__ActionsAssignment_4_2 : ( ruleActionButton ) ;
+    public final void rule__ActionToolbar__ActionsAssignment_4_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19493:1: ( ( ruleActionButton ) )
+            // InternalActionDSL.g:19494:2: ( ruleActionButton )
+            {
+            // InternalActionDSL.g:19494:2: ( ruleActionButton )
+            // InternalActionDSL.g:19495:3: ruleActionButton
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionToolbarAccess().getActionsActionButtonParserRuleCall_4_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleActionButton();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionToolbarAccess().getActionsActionButtonParserRuleCall_4_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionToolbar__ActionsAssignment_4_2"
+
+
+    // $ANTLR start "rule__ActionButton__NameAssignment_2"
+    // InternalActionDSL.g:19504:1: rule__ActionButton__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__ActionButton__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19508:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalActionDSL.g:19509:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalActionDSL.g:19509:2: ( ruleTRANSLATABLEID )
+            // InternalActionDSL.g:19510:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__NameAssignment_2"
+
+
+    // $ANTLR start "rule__ActionButton__DescriptionAssignment_3_0"
+    // InternalActionDSL.g:19519:1: rule__ActionButton__DescriptionAssignment_3_0 : ( ( 'describedBy' ) ) ;
+    public final void rule__ActionButton__DescriptionAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19523:1: ( ( ( 'describedBy' ) ) )
+            // InternalActionDSL.g:19524:2: ( ( 'describedBy' ) )
+            {
+            // InternalActionDSL.g:19524:2: ( ( 'describedBy' ) )
+            // InternalActionDSL.g:19525:3: ( 'describedBy' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            // InternalActionDSL.g:19526:3: ( 'describedBy' )
+            // InternalActionDSL.g:19527:4: 'describedBy'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            match(input,129,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__DescriptionAssignment_3_0"
+
+
+    // $ANTLR start "rule__ActionButton__DescriptionValueAssignment_3_1"
+    // InternalActionDSL.g:19538:1: rule__ActionButton__DescriptionValueAssignment_3_1 : ( ruleTRANSLATABLESTRING ) ;
+    public final void rule__ActionButton__DescriptionValueAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19542:1: ( ( ruleTRANSLATABLESTRING ) )
+            // InternalActionDSL.g:19543:2: ( ruleTRANSLATABLESTRING )
+            {
+            // InternalActionDSL.g:19543:2: ( ruleTRANSLATABLESTRING )
+            // InternalActionDSL.g:19544:3: ruleTRANSLATABLESTRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__DescriptionValueAssignment_3_1"
+
+
+    // $ANTLR start "rule__ActionButton__CommandAssignment_5"
+    // InternalActionDSL.g:19553:1: rule__ActionButton__CommandAssignment_5 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionButton__CommandAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19557:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19558:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19558:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19559:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getCommandActionCommandCrossReference_5_0()); 
+            }
+            // InternalActionDSL.g:19560:3: ( RULE_ID )
+            // InternalActionDSL.g:19561:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getCommandActionCommandIDTerminalRuleCall_5_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getCommandActionCommandIDTerminalRuleCall_5_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getCommandActionCommandCrossReference_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__CommandAssignment_5"
+
+
+    // $ANTLR start "rule__ActionButton__IconURIAssignment_6_1"
+    // InternalActionDSL.g:19572:1: rule__ActionButton__IconURIAssignment_6_1 : ( RULE_STRING ) ;
+    public final void rule__ActionButton__IconURIAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19576:1: ( ( RULE_STRING ) )
+            // InternalActionDSL.g:19577:2: ( RULE_STRING )
+            {
+            // InternalActionDSL.g:19577:2: ( RULE_STRING )
+            // InternalActionDSL.g:19578:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionButtonAccess().getIconURISTRINGTerminalRuleCall_6_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionButtonAccess().getIconURISTRINGTerminalRuleCall_6_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionButton__IconURIAssignment_6_1"
+
+
+    // $ANTLR start "rule__ActionTask__ActionAssignment_1"
+    // InternalActionDSL.g:19587:1: rule__ActionTask__ActionAssignment_1 : ( ruleTaskActionEnum ) ;
+    public final void rule__ActionTask__ActionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19591:1: ( ( ruleTaskActionEnum ) )
+            // InternalActionDSL.g:19592:2: ( ruleTaskActionEnum )
+            {
+            // InternalActionDSL.g:19592:2: ( ruleTaskActionEnum )
+            // InternalActionDSL.g:19593:3: ruleTaskActionEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionTaskAccess().getActionTaskActionEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTaskActionEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionTaskAccess().getActionTaskActionEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionTask__ActionAssignment_1"
+
+
+    // $ANTLR start "rule__ActionSelectWorkload__ActionAssignment_1"
+    // InternalActionDSL.g:19602:1: rule__ActionSelectWorkload__ActionAssignment_1 : ( ruleSelectWorkloadActionEnum ) ;
+    public final void rule__ActionSelectWorkload__ActionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19606:1: ( ( ruleSelectWorkloadActionEnum ) )
+            // InternalActionDSL.g:19607:2: ( ruleSelectWorkloadActionEnum )
+            {
+            // InternalActionDSL.g:19607:2: ( ruleSelectWorkloadActionEnum )
+            // InternalActionDSL.g:19608:3: ruleSelectWorkloadActionEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionSelectWorkloadAccess().getActionSelectWorkloadActionEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleSelectWorkloadActionEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionSelectWorkloadAccess().getActionSelectWorkloadActionEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionSelectWorkload__ActionAssignment_1"
+
+
+    // $ANTLR start "rule__ActionDialog__ActionAssignment_1"
+    // InternalActionDSL.g:19617:1: rule__ActionDialog__ActionAssignment_1 : ( ruleDialogActionEnum ) ;
+    public final void rule__ActionDialog__ActionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19621:1: ( ( ruleDialogActionEnum ) )
+            // InternalActionDSL.g:19622:2: ( ruleDialogActionEnum )
+            {
+            // InternalActionDSL.g:19622:2: ( ruleDialogActionEnum )
+            // InternalActionDSL.g:19623:3: ruleDialogActionEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDialogAccess().getActionDialogActionEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleDialogActionEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDialogAccess().getActionDialogActionEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDialog__ActionAssignment_1"
+
+
+    // $ANTLR start "rule__ActionReport__ActionAssignment_1"
+    // InternalActionDSL.g:19632:1: rule__ActionReport__ActionAssignment_1 : ( ruleReportActionEnum ) ;
+    public final void rule__ActionReport__ActionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19636:1: ( ( ruleReportActionEnum ) )
+            // InternalActionDSL.g:19637:2: ( ruleReportActionEnum )
+            {
+            // InternalActionDSL.g:19637:2: ( ruleReportActionEnum )
+            // InternalActionDSL.g:19638:3: ruleReportActionEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionReportAccess().getActionReportActionEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleReportActionEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionReportAccess().getActionReportActionEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionReport__ActionAssignment_1"
+
+
+    // $ANTLR start "rule__ActionChart__ActionAssignment_1"
+    // InternalActionDSL.g:19647:1: rule__ActionChart__ActionAssignment_1 : ( ruleChartActionEnum ) ;
+    public final void rule__ActionChart__ActionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19651:1: ( ( ruleChartActionEnum ) )
+            // InternalActionDSL.g:19652:2: ( ruleChartActionEnum )
+            {
+            // InternalActionDSL.g:19652:2: ( ruleChartActionEnum )
+            // InternalActionDSL.g:19653:3: ruleChartActionEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionChartAccess().getActionChartActionEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChartActionEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionChartAccess().getActionChartActionEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionChart__ActionAssignment_1"
+
+
+    // $ANTLR start "rule__ActionWorkflow__ActionAssignment_1"
+    // InternalActionDSL.g:19662:1: rule__ActionWorkflow__ActionAssignment_1 : ( ruleWorkflowActionEnum ) ;
+    public final void rule__ActionWorkflow__ActionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19666:1: ( ( ruleWorkflowActionEnum ) )
+            // InternalActionDSL.g:19667:2: ( ruleWorkflowActionEnum )
+            {
+            // InternalActionDSL.g:19667:2: ( ruleWorkflowActionEnum )
+            // InternalActionDSL.g:19668:3: ruleWorkflowActionEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionWorkflowAccess().getActionWorkflowActionEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleWorkflowActionEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionWorkflowAccess().getActionWorkflowActionEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionWorkflow__ActionAssignment_1"
+
+
+    // $ANTLR start "rule__ActionDatainterchange__ActionAssignment_1"
+    // InternalActionDSL.g:19677:1: rule__ActionDatainterchange__ActionAssignment_1 : ( ruleDatainterchangeActionEnum ) ;
+    public final void rule__ActionDatainterchange__ActionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19681:1: ( ( ruleDatainterchangeActionEnum ) )
+            // InternalActionDSL.g:19682:2: ( ruleDatainterchangeActionEnum )
+            {
+            // InternalActionDSL.g:19682:2: ( ruleDatainterchangeActionEnum )
+            // InternalActionDSL.g:19683:3: ruleDatainterchangeActionEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDatainterchangeAccess().getActionDatainterchangeActionEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleDatainterchangeActionEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDatainterchangeAccess().getActionDatainterchangeActionEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDatainterchange__ActionAssignment_1"
+
+
+    // $ANTLR start "rule__ActionDatainterchange__DataRefAssignment_2"
+    // InternalActionDSL.g:19692:1: rule__ActionDatainterchange__DataRefAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionDatainterchange__DataRefAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19696:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19697:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19697:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19698:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeCrossReference_2_0()); 
+            }
+            // InternalActionDSL.g:19699:3: ( RULE_ID )
+            // InternalActionDSL.g:19700:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionDatainterchange__DataRefAssignment_2"
+
+
+    // $ANTLR start "rule__ActionUI__ActionAssignment_1"
+    // InternalActionDSL.g:19711:1: rule__ActionUI__ActionAssignment_1 : ( ruleUIActionEnum ) ;
+    public final void rule__ActionUI__ActionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19715:1: ( ( ruleUIActionEnum ) )
+            // InternalActionDSL.g:19716:2: ( ruleUIActionEnum )
+            {
+            // InternalActionDSL.g:19716:2: ( ruleUIActionEnum )
+            // InternalActionDSL.g:19717:3: ruleUIActionEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionUIAccess().getActionUIActionEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleUIActionEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionUIAccess().getActionUIActionEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionUI__ActionAssignment_1"
+
+
+    // $ANTLR start "rule__ActionFunction__ActionGroupAssignment_2"
+    // InternalActionDSL.g:19726:1: rule__ActionFunction__ActionGroupAssignment_2 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionFunction__ActionGroupAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19730:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19731:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19731:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19732:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupCrossReference_2_0()); 
+            }
+            // InternalActionDSL.g:19733:3: ( RULE_ID )
+            // InternalActionDSL.g:19734:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupIDTerminalRuleCall_2_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupIDTerminalRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__ActionGroupAssignment_2"
+
+
+    // $ANTLR start "rule__ActionFunction__CanExecuteAssignment_4"
+    // InternalActionDSL.g:19745:1: rule__ActionFunction__CanExecuteAssignment_4 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionFunction__CanExecuteAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19749:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19750:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19750:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19751:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteCrossReference_4_0()); 
+            }
+            // InternalActionDSL.g:19752:3: ( RULE_ID )
+            // InternalActionDSL.g:19753:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteIDTerminalRuleCall_4_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteIDTerminalRuleCall_4_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteCrossReference_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__CanExecuteAssignment_4"
+
+
+    // $ANTLR start "rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0"
+    // InternalActionDSL.g:19764:1: rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0 : ( ( 'executeImmediate' ) ) ;
+    public final void rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19768:1: ( ( ( 'executeImmediate' ) ) )
+            // InternalActionDSL.g:19769:2: ( ( 'executeImmediate' ) )
+            {
+            // InternalActionDSL.g:19769:2: ( ( 'executeImmediate' ) )
+            // InternalActionDSL.g:19770:3: ( 'executeImmediate' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0()); 
+            }
+            // InternalActionDSL.g:19771:3: ( 'executeImmediate' )
+            // InternalActionDSL.g:19772:4: 'executeImmediate'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0()); 
+            }
+            match(input,131,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__HasExecuteImmediateAssignment_5_0_0"
+
+
+    // $ANTLR start "rule__ActionFunction__ExecuteImmediateAssignment_5_0_1"
+    // InternalActionDSL.g:19783:1: rule__ActionFunction__ExecuteImmediateAssignment_5_0_1 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionFunction__ExecuteImmediateAssignment_5_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19787:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19788:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19788:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19789:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0()); 
+            }
+            // InternalActionDSL.g:19790:3: ( RULE_ID )
+            // InternalActionDSL.g:19791:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteIDTerminalRuleCall_5_0_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteIDTerminalRuleCall_5_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__ExecuteImmediateAssignment_5_0_1"
+
+
+    // $ANTLR start "rule__ActionFunction__HasMessageAssignment_5_0_2_0"
+    // InternalActionDSL.g:19802:1: rule__ActionFunction__HasMessageAssignment_5_0_2_0 : ( ( 'messageCategory' ) ) ;
+    public final void rule__ActionFunction__HasMessageAssignment_5_0_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19806:1: ( ( ( 'messageCategory' ) ) )
+            // InternalActionDSL.g:19807:2: ( ( 'messageCategory' ) )
+            {
+            // InternalActionDSL.g:19807:2: ( ( 'messageCategory' ) )
+            // InternalActionDSL.g:19808:3: ( 'messageCategory' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0()); 
+            }
+            // InternalActionDSL.g:19809:3: ( 'messageCategory' )
+            // InternalActionDSL.g:19810:4: 'messageCategory'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0()); 
+            }
+            match(input,132,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__HasMessageAssignment_5_0_2_0"
+
+
+    // $ANTLR start "rule__ActionFunction__MessageCategoryAssignment_5_0_2_1"
+    // InternalActionDSL.g:19821:1: rule__ActionFunction__MessageCategoryAssignment_5_0_2_1 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionFunction__MessageCategoryAssignment_5_0_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19825:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19826:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19826:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19827:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_0_2_1_0()); 
+            }
+            // InternalActionDSL.g:19828:3: ( RULE_ID )
+            // InternalActionDSL.g:19829:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryIDTerminalRuleCall_5_0_2_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryIDTerminalRuleCall_5_0_2_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_0_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__MessageCategoryAssignment_5_0_2_1"
+
+
+    // $ANTLR start "rule__ActionFunction__OnFailMessageAssignment_5_0_2_3"
+    // InternalActionDSL.g:19840:1: rule__ActionFunction__OnFailMessageAssignment_5_0_2_3 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionFunction__OnFailMessageAssignment_5_0_2_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19844:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19845:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19845:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19846:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemCrossReference_5_0_2_3_0()); 
+            }
+            // InternalActionDSL.g:19847:3: ( RULE_ID )
+            // InternalActionDSL.g:19848:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemIDTerminalRuleCall_5_0_2_3_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemIDTerminalRuleCall_5_0_2_3_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemCrossReference_5_0_2_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__OnFailMessageAssignment_5_0_2_3"
+
+
+    // $ANTLR start "rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0"
+    // InternalActionDSL.g:19859:1: rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0 : ( ( 'onSuccessMessage' ) ) ;
+    public final void rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19863:1: ( ( ( 'onSuccessMessage' ) ) )
+            // InternalActionDSL.g:19864:2: ( ( 'onSuccessMessage' ) )
+            {
+            // InternalActionDSL.g:19864:2: ( ( 'onSuccessMessage' ) )
+            // InternalActionDSL.g:19865:3: ( 'onSuccessMessage' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0()); 
+            }
+            // InternalActionDSL.g:19866:3: ( 'onSuccessMessage' )
+            // InternalActionDSL.g:19867:4: 'onSuccessMessage'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0()); 
+            }
+            match(input,133,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__HasSuccessMessageAssignment_5_0_2_4_0"
+
+
+    // $ANTLR start "rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1"
+    // InternalActionDSL.g:19878:1: rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19882:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19883:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19883:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19884:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0()); 
+            }
+            // InternalActionDSL.g:19885:3: ( RULE_ID )
+            // InternalActionDSL.g:19886:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemIDTerminalRuleCall_5_0_2_4_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemIDTerminalRuleCall_5_0_2_4_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__OnSuccessMessageAssignment_5_0_2_4_1"
+
+
+    // $ANTLR start "rule__ActionFunction__HasExecuteLaterAssignment_5_1_0"
+    // InternalActionDSL.g:19897:1: rule__ActionFunction__HasExecuteLaterAssignment_5_1_0 : ( ( 'executeLater' ) ) ;
+    public final void rule__ActionFunction__HasExecuteLaterAssignment_5_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19901:1: ( ( ( 'executeLater' ) ) )
+            // InternalActionDSL.g:19902:2: ( ( 'executeLater' ) )
+            {
+            // InternalActionDSL.g:19902:2: ( ( 'executeLater' ) )
+            // InternalActionDSL.g:19903:3: ( 'executeLater' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0()); 
+            }
+            // InternalActionDSL.g:19904:3: ( 'executeLater' )
+            // InternalActionDSL.g:19905:4: 'executeLater'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0()); 
+            }
+            match(input,134,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__HasExecuteLaterAssignment_5_1_0"
+
+
+    // $ANTLR start "rule__ActionFunction__ExecuteLaterAssignment_5_1_1"
+    // InternalActionDSL.g:19916:1: rule__ActionFunction__ExecuteLaterAssignment_5_1_1 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionFunction__ExecuteLaterAssignment_5_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19920:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19921:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19921:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19922:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0()); 
+            }
+            // InternalActionDSL.g:19923:3: ( RULE_ID )
+            // InternalActionDSL.g:19924:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteIDTerminalRuleCall_5_1_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteIDTerminalRuleCall_5_1_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__ExecuteLaterAssignment_5_1_1"
+
+
+    // $ANTLR start "rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0"
+    // InternalActionDSL.g:19935:1: rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0 : ( ( 'messageCategory' ) ) ;
+    public final void rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19939:1: ( ( ( 'messageCategory' ) ) )
+            // InternalActionDSL.g:19940:2: ( ( 'messageCategory' ) )
+            {
+            // InternalActionDSL.g:19940:2: ( ( 'messageCategory' ) )
+            // InternalActionDSL.g:19941:3: ( 'messageCategory' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0()); 
+            }
+            // InternalActionDSL.g:19942:3: ( 'messageCategory' )
+            // InternalActionDSL.g:19943:4: 'messageCategory'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0()); 
+            }
+            match(input,132,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__HasStartedMessageAssignment_5_1_2_0"
+
+
+    // $ANTLR start "rule__ActionFunction__MessageCategoryAssignment_5_1_2_1"
+    // InternalActionDSL.g:19954:1: rule__ActionFunction__MessageCategoryAssignment_5_1_2_1 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionFunction__MessageCategoryAssignment_5_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19958:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19959:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19959:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19960:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_1_2_1_0()); 
+            }
+            // InternalActionDSL.g:19961:3: ( RULE_ID )
+            // InternalActionDSL.g:19962:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryIDTerminalRuleCall_5_1_2_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryIDTerminalRuleCall_5_1_2_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_1_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__MessageCategoryAssignment_5_1_2_1"
+
+
+    // $ANTLR start "rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3"
+    // InternalActionDSL.g:19973:1: rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3 : ( ( RULE_ID ) ) ;
+    public final void rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19977:1: ( ( ( RULE_ID ) ) )
+            // InternalActionDSL.g:19978:2: ( ( RULE_ID ) )
+            {
+            // InternalActionDSL.g:19978:2: ( ( RULE_ID ) )
+            // InternalActionDSL.g:19979:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemCrossReference_5_1_2_3_0()); 
+            }
+            // InternalActionDSL.g:19980:3: ( RULE_ID )
+            // InternalActionDSL.g:19981:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemIDTerminalRuleCall_5_1_2_3_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemIDTerminalRuleCall_5_1_2_3_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemCrossReference_5_1_2_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ActionFunction__OnStartedMessageAssignment_5_1_2_3"
+
+
+    // $ANTLR start "rule__XImportDeclaration__StaticAssignment_2_0_0"
+    // InternalActionDSL.g:19992:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
+    public final void rule__XImportDeclaration__StaticAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:19996:1: ( ( ( 'static' ) ) )
+            // InternalActionDSL.g:19997:2: ( ( 'static' ) )
+            {
+            // InternalActionDSL.g:19997:2: ( ( 'static' ) )
+            // InternalActionDSL.g:19998:3: ( 'static' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
+            }
+            // InternalActionDSL.g:19999:3: ( 'static' )
+            // InternalActionDSL.g:20000:4: 'static'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
+            }
+            match(input,48,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__StaticAssignment_2_0_0"
+
+
+    // $ANTLR start "rule__XImportDeclaration__ExtensionAssignment_2_0_1"
+    // InternalActionDSL.g:20011:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
+    public final void rule__XImportDeclaration__ExtensionAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20015:1: ( ( ( 'extension' ) ) )
+            // InternalActionDSL.g:20016:2: ( ( 'extension' ) )
+            {
+            // InternalActionDSL.g:20016:2: ( ( 'extension' ) )
+            // InternalActionDSL.g:20017:3: ( 'extension' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
+            }
+            // InternalActionDSL.g:20018:3: ( 'extension' )
+            // InternalActionDSL.g:20019:4: 'extension'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
+            }
+            match(input,50,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__ExtensionAssignment_2_0_1"
+
+
+    // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2"
+    // InternalActionDSL.g:20030:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
+    public final void rule__XImportDeclaration__ImportedTypeAssignment_2_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20034:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
+            // InternalActionDSL.g:20035:2: ( ( ruleQualifiedNameInStaticImport ) )
+            {
+            // InternalActionDSL.g:20035:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalActionDSL.g:20036:3: ( ruleQualifiedNameInStaticImport )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); 
+            }
+            // InternalActionDSL.g:20037:3: ( ruleQualifiedNameInStaticImport )
+            // InternalActionDSL.g:20038:4: ruleQualifiedNameInStaticImport
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_2_0_2_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedNameInStaticImport();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_2_0_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2"
+
+
+    // $ANTLR start "rule__XImportDeclaration__WildcardAssignment_2_0_3_0"
+    // InternalActionDSL.g:20049:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
+    public final void rule__XImportDeclaration__WildcardAssignment_2_0_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20053:1: ( ( ( '*' ) ) )
+            // InternalActionDSL.g:20054:2: ( ( '*' ) )
+            {
+            // InternalActionDSL.g:20054:2: ( ( '*' ) )
+            // InternalActionDSL.g:20055:3: ( '*' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
+            }
+            // InternalActionDSL.g:20056:3: ( '*' )
+            // InternalActionDSL.g:20057:4: '*'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
+            }
+            match(input,38,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__WildcardAssignment_2_0_3_0"
+
+
+    // $ANTLR start "rule__XImportDeclaration__MemberNameAssignment_2_0_3_1"
+    // InternalActionDSL.g:20068:1: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 : ( ruleValidID ) ;
+    public final void rule__XImportDeclaration__MemberNameAssignment_2_0_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20072:1: ( ( ruleValidID ) )
+            // InternalActionDSL.g:20073:2: ( ruleValidID )
+            {
+            // InternalActionDSL.g:20073:2: ( ruleValidID )
+            // InternalActionDSL.g:20074:3: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__MemberNameAssignment_2_0_3_1"
+
+
+    // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_1"
+    // InternalActionDSL.g:20083:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XImportDeclaration__ImportedTypeAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20087:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalActionDSL.g:20088:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalActionDSL.g:20088:2: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:20089:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); 
+            }
+            // InternalActionDSL.g:20090:3: ( ruleQualifiedName )
+            // InternalActionDSL.g:20091:4: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_2_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_2_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__ImportedTypeAssignment_2_1"
+
+
+    // $ANTLR start "rule__XImportDeclaration__ImportedNamespaceAssignment_2_2"
+    // InternalActionDSL.g:20102:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
+    public final void rule__XImportDeclaration__ImportedNamespaceAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20106:1: ( ( ruleQualifiedNameWithWildcard ) )
+            // InternalActionDSL.g:20107:2: ( ruleQualifiedNameWithWildcard )
+            {
+            // InternalActionDSL.g:20107:2: ( ruleQualifiedNameWithWildcard )
+            // InternalActionDSL.g:20108:3: ruleQualifiedNameWithWildcard
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedNameWithWildcard();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__ImportedNamespaceAssignment_2_2"
+
+
+    // $ANTLR start "rule__XImportDeclaration__FqnImportAssignment_2_3_0"
+    // InternalActionDSL.g:20117:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
+    public final void rule__XImportDeclaration__FqnImportAssignment_2_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20121:1: ( ( ( 'ns' ) ) )
+            // InternalActionDSL.g:20122:2: ( ( 'ns' ) )
+            {
+            // InternalActionDSL.g:20122:2: ( ( 'ns' ) )
+            // InternalActionDSL.g:20123:3: ( 'ns' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+            // InternalActionDSL.g:20124:3: ( 'ns' )
+            // InternalActionDSL.g:20125:4: 'ns'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+            match(input,135,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__FqnImportAssignment_2_3_0"
+
+
+    // $ANTLR start "rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1"
+    // InternalActionDSL.g:20136:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
+    public final void rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20140:1: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:20141:2: ( ruleQualifiedName )
+            {
+            // InternalActionDSL.g:20141:2: ( ruleQualifiedName )
+            // InternalActionDSL.g:20142:3: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1"
+
+
+    // $ANTLR start "rule__XAnnotation__AnnotationTypeAssignment_2"
+    // InternalActionDSL.g:20151:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20155:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalActionDSL.g:20156:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalActionDSL.g:20156:2: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:20157:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+            }
+            // InternalActionDSL.g:20158:3: ( ruleQualifiedName )
+            // InternalActionDSL.g:20159:4: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeQualifiedNameParserRuleCall_2_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeQualifiedNameParserRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__AnnotationTypeAssignment_2"
+
+
+    // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0"
+    // InternalActionDSL.g:20170:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 : ( ruleXAnnotationElementValuePair ) ;
+    public final void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20174:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalActionDSL.g:20175:2: ( ruleXAnnotationElementValuePair )
+            {
+            // InternalActionDSL.g:20175:2: ( ruleXAnnotationElementValuePair )
+            // InternalActionDSL.g:20176:3: ruleXAnnotationElementValuePair
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0"
+
+
+    // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1"
+    // InternalActionDSL.g:20185:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 : ( ruleXAnnotationElementValuePair ) ;
+    public final void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20189:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalActionDSL.g:20190:2: ( ruleXAnnotationElementValuePair )
+            {
+            // InternalActionDSL.g:20190:2: ( ruleXAnnotationElementValuePair )
+            // InternalActionDSL.g:20191:3: ruleXAnnotationElementValuePair
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1"
+
+
+    // $ANTLR start "rule__XAnnotation__ValueAssignment_3_1_1"
+    // InternalActionDSL.g:20200:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
+    public final void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20204:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
+            // InternalActionDSL.g:20205:2: ( ruleXAnnotationElementValueOrCommaList )
+            {
+            // InternalActionDSL.g:20205:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalActionDSL.g:20206:3: ruleXAnnotationElementValueOrCommaList
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationElementValueOrCommaList();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__ValueAssignment_3_1_1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0"
+    // InternalActionDSL.g:20215:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
+    public final void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20219:1: ( ( ( ruleValidID ) ) )
+            // InternalActionDSL.g:20220:2: ( ( ruleValidID ) )
+            {
+            // InternalActionDSL.g:20220:2: ( ( ruleValidID ) )
+            // InternalActionDSL.g:20221:3: ( ruleValidID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+            }
+            // InternalActionDSL.g:20222:3: ( ruleValidID )
+            // InternalActionDSL.g:20223:4: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationValidIDParserRuleCall_0_0_0_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationValidIDParserRuleCall_0_0_0_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValuePair__ValueAssignment_1"
+    // InternalActionDSL.g:20234:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
+    public final void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20238:1: ( ( ruleXAnnotationElementValue ) )
+            // InternalActionDSL.g:20239:2: ( ruleXAnnotationElementValue )
+            {
+            // InternalActionDSL.g:20239:2: ( ruleXAnnotationElementValue )
+            // InternalActionDSL.g:20240:3: ruleXAnnotationElementValue
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValuePair__ValueAssignment_1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0"
+    // InternalActionDSL.g:20249:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20253:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalActionDSL.g:20254:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalActionDSL.g:20254:2: ( ruleXAnnotationOrExpression )
+            // InternalActionDSL.g:20255:3: ruleXAnnotationOrExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1"
+    // InternalActionDSL.g:20264:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20268:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalActionDSL.g:20269:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalActionDSL.g:20269:2: ( ruleXAnnotationOrExpression )
+            // InternalActionDSL.g:20270:3: ruleXAnnotationOrExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1"
+    // InternalActionDSL.g:20279:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20283:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalActionDSL.g:20284:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalActionDSL.g:20284:2: ( ruleXAnnotationOrExpression )
+            // InternalActionDSL.g:20285:3: ruleXAnnotationOrExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_0"
+    // InternalActionDSL.g:20294:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20298:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalActionDSL.g:20299:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalActionDSL.g:20299:2: ( ruleXAnnotationOrExpression )
+            // InternalActionDSL.g:20300:3: ruleXAnnotationOrExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__ElementsAssignment_0_1_0"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1"
+    // InternalActionDSL.g:20309:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20313:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalActionDSL.g:20314:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalActionDSL.g:20314:2: ( ruleXAnnotationOrExpression )
+            // InternalActionDSL.g:20315:3: ruleXAnnotationOrExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1"
+
+
+    // $ANTLR start "rule__XAssignment__FeatureAssignment_0_1"
+    // InternalActionDSL.g:20324:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
+    public final void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20328:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalActionDSL.g:20329:2: ( ( ruleFeatureCallID ) )
+            {
+            // InternalActionDSL.g:20329:2: ( ( ruleFeatureCallID ) )
+            // InternalActionDSL.g:20330:3: ( ruleFeatureCallID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+            // InternalActionDSL.g:20331:3: ( ruleFeatureCallID )
+            // InternalActionDSL.g:20332:4: ruleFeatureCallID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleFeatureCallID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__FeatureAssignment_0_1"
+
+
+    // $ANTLR start "rule__XAssignment__ValueAssignment_0_3"
+    // InternalActionDSL.g:20343:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
+    public final void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20347:1: ( ( ruleXAssignment ) )
+            // InternalActionDSL.g:20348:2: ( ruleXAssignment )
+            {
+            // InternalActionDSL.g:20348:2: ( ruleXAssignment )
+            // InternalActionDSL.g:20349:3: ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__ValueAssignment_0_3"
+
+
+    // $ANTLR start "rule__XAssignment__FeatureAssignment_1_1_0_0_1"
+    // InternalActionDSL.g:20358:1: rule__XAssignment__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpMultiAssign ) ) ;
+    public final void rule__XAssignment__FeatureAssignment_1_1_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20362:1: ( ( ( ruleOpMultiAssign ) ) )
+            // InternalActionDSL.g:20363:2: ( ( ruleOpMultiAssign ) )
+            {
+            // InternalActionDSL.g:20363:2: ( ( ruleOpMultiAssign ) )
+            // InternalActionDSL.g:20364:3: ( ruleOpMultiAssign )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+            // InternalActionDSL.g:20365:3: ( ruleOpMultiAssign )
+            // InternalActionDSL.g:20366:4: ruleOpMultiAssign
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_1_1_0_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpMultiAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_1_1_0_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__FeatureAssignment_1_1_0_0_1"
+
+
+    // $ANTLR start "rule__XAssignment__RightOperandAssignment_1_1_1"
+    // InternalActionDSL.g:20377:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
+    public final void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20381:1: ( ( ruleXAssignment ) )
+            // InternalActionDSL.g:20382:2: ( ruleXAssignment )
+            {
+            // InternalActionDSL.g:20382:2: ( ruleXAssignment )
+            // InternalActionDSL.g:20383:3: ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__RightOperandAssignment_1_1_1"
+
+
+    // $ANTLR start "rule__XOrExpression__FeatureAssignment_1_0_0_1"
+    // InternalActionDSL.g:20392:1: rule__XOrExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOr ) ) ;
+    public final void rule__XOrExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20396:1: ( ( ( ruleOpOr ) ) )
+            // InternalActionDSL.g:20397:2: ( ( ruleOpOr ) )
+            {
+            // InternalActionDSL.g:20397:2: ( ( ruleOpOr ) )
+            // InternalActionDSL.g:20398:3: ( ruleOpOr )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalActionDSL.g:20399:3: ( ruleOpOr )
+            // InternalActionDSL.g:20400:4: ruleOpOr
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementOpOrParserRuleCall_1_0_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpOr();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementOpOrParserRuleCall_1_0_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__FeatureAssignment_1_0_0_1"
+
+
+    // $ANTLR start "rule__XOrExpression__RightOperandAssignment_1_1"
+    // InternalActionDSL.g:20411:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
+    public final void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20415:1: ( ( ruleXAndExpression ) )
+            // InternalActionDSL.g:20416:2: ( ruleXAndExpression )
+            {
+            // InternalActionDSL.g:20416:2: ( ruleXAndExpression )
+            // InternalActionDSL.g:20417:3: ruleXAndExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOrExpression__RightOperandAssignment_1_1"
+
+
+    // $ANTLR start "rule__XAndExpression__FeatureAssignment_1_0_0_1"
+    // InternalActionDSL.g:20426:1: rule__XAndExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAnd ) ) ;
+    public final void rule__XAndExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20430:1: ( ( ( ruleOpAnd ) ) )
+            // InternalActionDSL.g:20431:2: ( ( ruleOpAnd ) )
+            {
+            // InternalActionDSL.g:20431:2: ( ( ruleOpAnd ) )
+            // InternalActionDSL.g:20432:3: ( ruleOpAnd )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalActionDSL.g:20433:3: ( ruleOpAnd )
+            // InternalActionDSL.g:20434:4: ruleOpAnd
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__FeatureAssignment_1_0_0_1"
+
+
+    // $ANTLR start "rule__XAndExpression__RightOperandAssignment_1_1"
+    // InternalActionDSL.g:20445:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
+    public final void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20449:1: ( ( ruleXEqualityExpression ) )
+            // InternalActionDSL.g:20450:2: ( ruleXEqualityExpression )
+            {
+            // InternalActionDSL.g:20450:2: ( ruleXEqualityExpression )
+            // InternalActionDSL.g:20451:3: ruleXEqualityExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAndExpression__RightOperandAssignment_1_1"
+
+
+    // $ANTLR start "rule__XEqualityExpression__FeatureAssignment_1_0_0_1"
+    // InternalActionDSL.g:20460:1: rule__XEqualityExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpEquality ) ) ;
+    public final void rule__XEqualityExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20464:1: ( ( ( ruleOpEquality ) ) )
+            // InternalActionDSL.g:20465:2: ( ( ruleOpEquality ) )
+            {
+            // InternalActionDSL.g:20465:2: ( ( ruleOpEquality ) )
+            // InternalActionDSL.g:20466:3: ( ruleOpEquality )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalActionDSL.g:20467:3: ( ruleOpEquality )
+            // InternalActionDSL.g:20468:4: ruleOpEquality
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementOpEqualityParserRuleCall_1_0_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementOpEqualityParserRuleCall_1_0_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__FeatureAssignment_1_0_0_1"
+
+
+    // $ANTLR start "rule__XEqualityExpression__RightOperandAssignment_1_1"
+    // InternalActionDSL.g:20479:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
+    public final void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20483:1: ( ( ruleXRelationalExpression ) )
+            // InternalActionDSL.g:20484:2: ( ruleXRelationalExpression )
+            {
+            // InternalActionDSL.g:20484:2: ( ruleXRelationalExpression )
+            // InternalActionDSL.g:20485:3: ruleXRelationalExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XEqualityExpression__RightOperandAssignment_1_1"
+
+
+    // $ANTLR start "rule__XRelationalExpression__TypeAssignment_1_0_1"
+    // InternalActionDSL.g:20494:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20498:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:20499:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:20499:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:20500:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__TypeAssignment_1_0_1"
+
+
+    // $ANTLR start "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1"
+    // InternalActionDSL.g:20509:1: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpCompare ) ) ;
+    public final void rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20513:1: ( ( ( ruleOpCompare ) ) )
+            // InternalActionDSL.g:20514:2: ( ( ruleOpCompare ) )
+            {
+            // InternalActionDSL.g:20514:2: ( ( ruleOpCompare ) )
+            // InternalActionDSL.g:20515:3: ( ruleOpCompare )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+            // InternalActionDSL.g:20516:3: ( ruleOpCompare )
+            // InternalActionDSL.g:20517:4: ruleOpCompare
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_1_0_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpCompare();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_1_0_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1"
+
+
+    // $ANTLR start "rule__XRelationalExpression__RightOperandAssignment_1_1_1"
+    // InternalActionDSL.g:20528:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
+    public final void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20532:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalActionDSL.g:20533:2: ( ruleXOtherOperatorExpression )
+            {
+            // InternalActionDSL.g:20533:2: ( ruleXOtherOperatorExpression )
+            // InternalActionDSL.g:20534:3: ruleXOtherOperatorExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__RightOperandAssignment_1_1_1"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1"
+    // InternalActionDSL.g:20543:1: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOther ) ) ;
+    public final void rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20547:1: ( ( ( ruleOpOther ) ) )
+            // InternalActionDSL.g:20548:2: ( ( ruleOpOther ) )
+            {
+            // InternalActionDSL.g:20548:2: ( ( ruleOpOther ) )
+            // InternalActionDSL.g:20549:3: ( ruleOpOther )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalActionDSL.g:20550:3: ( ruleOpOther )
+            // InternalActionDSL.g:20551:4: ruleOpOther
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementOpOtherParserRuleCall_1_0_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpOther();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementOpOtherParserRuleCall_1_0_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1"
+
+
+    // $ANTLR start "rule__XOtherOperatorExpression__RightOperandAssignment_1_1"
+    // InternalActionDSL.g:20562:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
+    public final void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20566:1: ( ( ruleXAdditiveExpression ) )
+            // InternalActionDSL.g:20567:2: ( ruleXAdditiveExpression )
+            {
+            // InternalActionDSL.g:20567:2: ( ruleXAdditiveExpression )
+            // InternalActionDSL.g:20568:3: ruleXAdditiveExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XOtherOperatorExpression__RightOperandAssignment_1_1"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1"
+    // InternalActionDSL.g:20577:1: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAdd ) ) ;
+    public final void rule__XAdditiveExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20581:1: ( ( ( ruleOpAdd ) ) )
+            // InternalActionDSL.g:20582:2: ( ( ruleOpAdd ) )
+            {
+            // InternalActionDSL.g:20582:2: ( ( ruleOpAdd ) )
+            // InternalActionDSL.g:20583:3: ( ruleOpAdd )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalActionDSL.g:20584:3: ( ruleOpAdd )
+            // InternalActionDSL.g:20585:4: ruleOpAdd
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementOpAddParserRuleCall_1_0_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpAdd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementOpAddParserRuleCall_1_0_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1"
+
+
+    // $ANTLR start "rule__XAdditiveExpression__RightOperandAssignment_1_1"
+    // InternalActionDSL.g:20596:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
+    public final void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20600:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalActionDSL.g:20601:2: ( ruleXMultiplicativeExpression )
+            {
+            // InternalActionDSL.g:20601:2: ( ruleXMultiplicativeExpression )
+            // InternalActionDSL.g:20602:3: ruleXMultiplicativeExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAdditiveExpression__RightOperandAssignment_1_1"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1"
+    // InternalActionDSL.g:20611:1: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpMulti ) ) ;
+    public final void rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20615:1: ( ( ( ruleOpMulti ) ) )
+            // InternalActionDSL.g:20616:2: ( ( ruleOpMulti ) )
+            {
+            // InternalActionDSL.g:20616:2: ( ( ruleOpMulti ) )
+            // InternalActionDSL.g:20617:3: ( ruleOpMulti )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalActionDSL.g:20618:3: ( ruleOpMulti )
+            // InternalActionDSL.g:20619:4: ruleOpMulti
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementOpMultiParserRuleCall_1_0_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpMulti();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementOpMultiParserRuleCall_1_0_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1"
+
+
+    // $ANTLR start "rule__XMultiplicativeExpression__RightOperandAssignment_1_1"
+    // InternalActionDSL.g:20630:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
+    public final void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20634:1: ( ( ruleXUnaryOperation ) )
+            // InternalActionDSL.g:20635:2: ( ruleXUnaryOperation )
+            {
+            // InternalActionDSL.g:20635:2: ( ruleXUnaryOperation )
+            // InternalActionDSL.g:20636:3: ruleXUnaryOperation
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMultiplicativeExpression__RightOperandAssignment_1_1"
+
+
+    // $ANTLR start "rule__XUnaryOperation__FeatureAssignment_0_1"
+    // InternalActionDSL.g:20645:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
+    public final void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20649:1: ( ( ( ruleOpUnary ) ) )
+            // InternalActionDSL.g:20650:2: ( ( ruleOpUnary ) )
+            {
+            // InternalActionDSL.g:20650:2: ( ( ruleOpUnary ) )
+            // InternalActionDSL.g:20651:3: ( ruleOpUnary )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+            // InternalActionDSL.g:20652:3: ( ruleOpUnary )
+            // InternalActionDSL.g:20653:4: ruleOpUnary
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementOpUnaryParserRuleCall_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpUnary();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementOpUnaryParserRuleCall_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XUnaryOperation__FeatureAssignment_0_1"
+
+
+    // $ANTLR start "rule__XUnaryOperation__OperandAssignment_0_2"
+    // InternalActionDSL.g:20664:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
+    public final void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20668:1: ( ( ruleXUnaryOperation ) )
+            // InternalActionDSL.g:20669:2: ( ruleXUnaryOperation )
+            {
+            // InternalActionDSL.g:20669:2: ( ruleXUnaryOperation )
+            // InternalActionDSL.g:20670:3: ruleXUnaryOperation
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XUnaryOperation__OperandAssignment_0_2"
+
+
+    // $ANTLR start "rule__XCastedExpression__TypeAssignment_1_1"
+    // InternalActionDSL.g:20679:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20683:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:20684:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:20684:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:20685:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCastedExpression__TypeAssignment_1_1"
+
+
+    // $ANTLR start "rule__XPostfixOperation__FeatureAssignment_1_0_1"
+    // InternalActionDSL.g:20694:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
+    public final void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20698:1: ( ( ( ruleOpPostfix ) ) )
+            // InternalActionDSL.g:20699:2: ( ( ruleOpPostfix ) )
+            {
+            // InternalActionDSL.g:20699:2: ( ( ruleOpPostfix ) )
+            // InternalActionDSL.g:20700:3: ( ruleOpPostfix )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
+            }
+            // InternalActionDSL.g:20701:3: ( ruleOpPostfix )
+            // InternalActionDSL.g:20702:4: ruleOpPostfix
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_0_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleOpPostfix();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_0_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XPostfixOperation__FeatureAssignment_1_0_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1"
+    // InternalActionDSL.g:20713:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 : ( ( '::' ) ) ;
+    public final void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20717:1: ( ( ( '::' ) ) )
+            // InternalActionDSL.g:20718:2: ( ( '::' ) )
+            {
+            // InternalActionDSL.g:20718:2: ( ( '::' ) )
+            // InternalActionDSL.g:20719:3: ( '::' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+            // InternalActionDSL.g:20720:3: ( '::' )
+            // InternalActionDSL.g:20721:4: '::'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+            match(input,136,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2"
+    // InternalActionDSL.g:20732:1: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 : ( ( ruleFeatureCallID ) ) ;
+    public final void rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20736:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalActionDSL.g:20737:2: ( ( ruleFeatureCallID ) )
+            {
+            // InternalActionDSL.g:20737:2: ( ( ruleFeatureCallID ) )
+            // InternalActionDSL.g:20738:3: ( ruleFeatureCallID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
+            }
+            // InternalActionDSL.g:20739:3: ( ruleFeatureCallID )
+            // InternalActionDSL.g:20740:4: ruleFeatureCallID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_0_2_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleFeatureCallID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_0_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__ValueAssignment_1_0_1"
+    // InternalActionDSL.g:20751:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
+    public final void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20755:1: ( ( ruleXAssignment ) )
+            // InternalActionDSL.g:20756:2: ( ruleXAssignment )
+            {
+            // InternalActionDSL.g:20756:2: ( ruleXAssignment )
+            // InternalActionDSL.g:20757:3: ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__ValueAssignment_1_0_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1"
+    // InternalActionDSL.g:20766:1: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 : ( ( '?.' ) ) ;
+    public final void rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20770:1: ( ( ( '?.' ) ) )
+            // InternalActionDSL.g:20771:2: ( ( '?.' ) )
+            {
+            // InternalActionDSL.g:20771:2: ( ( '?.' ) )
+            // InternalActionDSL.g:20772:3: ( '?.' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+            // InternalActionDSL.g:20773:3: ( '?.' )
+            // InternalActionDSL.g:20774:4: '?.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+            match(input,137,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2"
+    // InternalActionDSL.g:20785:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 : ( ( '::' ) ) ;
+    public final void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20789:1: ( ( ( '::' ) ) )
+            // InternalActionDSL.g:20790:2: ( ( '::' ) )
+            {
+            // InternalActionDSL.g:20790:2: ( ( '::' ) )
+            // InternalActionDSL.g:20791:3: ( '::' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+            // InternalActionDSL.g:20792:3: ( '::' )
+            // InternalActionDSL.g:20793:4: '::'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+            match(input,136,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1"
+    // InternalActionDSL.g:20804:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20808:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:20809:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:20809:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:20810:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1"
+    // InternalActionDSL.g:20819:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20823:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:20824:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:20824:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:20825:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_1_2"
+    // InternalActionDSL.g:20834:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
+    public final void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20838:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalActionDSL.g:20839:2: ( ( ruleIdOrSuper ) )
+            {
+            // InternalActionDSL.g:20839:2: ( ( ruleIdOrSuper ) )
+            // InternalActionDSL.g:20840:3: ( ruleIdOrSuper )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
+            }
+            // InternalActionDSL.g:20841:3: ( ruleIdOrSuper )
+            // InternalActionDSL.g:20842:4: ruleIdOrSuper
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_1_2_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_1_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__FeatureAssignment_1_1_2"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0"
+    // InternalActionDSL.g:20853:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
+    public final void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20857:1: ( ( ( '(' ) ) )
+            // InternalActionDSL.g:20858:2: ( ( '(' ) )
+            {
+            // InternalActionDSL.g:20858:2: ( ( '(' ) )
+            // InternalActionDSL.g:20859:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+            // InternalActionDSL.g:20860:3: ( '(' )
+            // InternalActionDSL.g:20861:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0"
+    // InternalActionDSL.g:20872:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 : ( ruleXShortClosure ) ;
+    public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20876:1: ( ( ruleXShortClosure ) )
+            // InternalActionDSL.g:20877:2: ( ruleXShortClosure )
+            {
+            // InternalActionDSL.g:20877:2: ( ruleXShortClosure )
+            // InternalActionDSL.g:20878:3: ruleXShortClosure
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXShortClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0"
+    // InternalActionDSL.g:20887:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 : ( ruleXExpression ) ;
+    public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20891:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:20892:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:20892:2: ( ruleXExpression )
+            // InternalActionDSL.g:20893:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1"
+    // InternalActionDSL.g:20902:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 : ( ruleXExpression ) ;
+    public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20906:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:20907:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:20907:2: ( ruleXExpression )
+            // InternalActionDSL.g:20908:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1"
+
+
+    // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4"
+    // InternalActionDSL.g:20917:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
+    public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20921:1: ( ( ruleXClosure ) )
+            // InternalActionDSL.g:20922:2: ( ruleXClosure )
+            {
+            // InternalActionDSL.g:20922:2: ( ruleXClosure )
+            // InternalActionDSL.g:20923:3: ruleXClosure
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4"
+
+
+    // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_0"
+    // InternalActionDSL.g:20932:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    public final void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20936:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:20937:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:20937:2: ( ruleXExpression )
+            // InternalActionDSL.g:20938:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__ElementsAssignment_3_0"
+
+
+    // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_1_1"
+    // InternalActionDSL.g:20947:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20951:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:20952:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:20952:2: ( ruleXExpression )
+            // InternalActionDSL.g:20953:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__ElementsAssignment_3_1_1"
+
+
+    // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_0"
+    // InternalActionDSL.g:20962:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    public final void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20966:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:20967:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:20967:2: ( ruleXExpression )
+            // InternalActionDSL.g:20968:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__ElementsAssignment_3_0"
+
+
+    // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_1_1"
+    // InternalActionDSL.g:20977:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20981:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:20982:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:20982:2: ( ruleXExpression )
+            // InternalActionDSL.g:20983:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XListLiteral__ElementsAssignment_3_1_1"
+
+
+    // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0"
+    // InternalActionDSL.g:20992:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:20996:1: ( ( ruleJvmFormalParameter ) )
+            // InternalActionDSL.g:20997:2: ( ruleJvmFormalParameter )
+            {
+            // InternalActionDSL.g:20997:2: ( ruleJvmFormalParameter )
+            // InternalActionDSL.g:20998:3: ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0"
+
+
+    // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1"
+    // InternalActionDSL.g:21007:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21011:1: ( ( ruleJvmFormalParameter ) )
+            // InternalActionDSL.g:21012:2: ( ruleJvmFormalParameter )
+            {
+            // InternalActionDSL.g:21012:2: ( ruleJvmFormalParameter )
+            // InternalActionDSL.g:21013:3: ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1"
+
+
+    // $ANTLR start "rule__XClosure__ExplicitSyntaxAssignment_1_0_1"
+    // InternalActionDSL.g:21022:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
+    public final void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21026:1: ( ( ( '|' ) ) )
+            // InternalActionDSL.g:21027:2: ( ( '|' ) )
+            {
+            // InternalActionDSL.g:21027:2: ( ( '|' ) )
+            // InternalActionDSL.g:21028:3: ( '|' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+            // InternalActionDSL.g:21029:3: ( '|' )
+            // InternalActionDSL.g:21030:4: '|'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+            match(input,138,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__ExplicitSyntaxAssignment_1_0_1"
+
+
+    // $ANTLR start "rule__XClosure__ExpressionAssignment_2"
+    // InternalActionDSL.g:21041:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
+    public final void rule__XClosure__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21045:1: ( ( ruleXExpressionInClosure ) )
+            // InternalActionDSL.g:21046:2: ( ruleXExpressionInClosure )
+            {
+            // InternalActionDSL.g:21046:2: ( ruleXExpressionInClosure )
+            // InternalActionDSL.g:21047:3: ruleXExpressionInClosure
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpressionInClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XClosure__ExpressionAssignment_2"
+
+
+    // $ANTLR start "rule__XExpressionInClosure__ExpressionsAssignment_1_0"
+    // InternalActionDSL.g:21056:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21060:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalActionDSL.g:21061:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalActionDSL.g:21061:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalActionDSL.g:21062:3: ruleXExpressionOrVarDeclaration
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpressionOrVarDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XExpressionInClosure__ExpressionsAssignment_1_0"
+
+
+    // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0"
+    // InternalActionDSL.g:21071:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21075:1: ( ( ruleJvmFormalParameter ) )
+            // InternalActionDSL.g:21076:2: ( ruleJvmFormalParameter )
+            {
+            // InternalActionDSL.g:21076:2: ( ruleJvmFormalParameter )
+            // InternalActionDSL.g:21077:3: ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0"
+
+
+    // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1"
+    // InternalActionDSL.g:21086:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21090:1: ( ( ruleJvmFormalParameter ) )
+            // InternalActionDSL.g:21091:2: ( ruleJvmFormalParameter )
+            {
+            // InternalActionDSL.g:21091:2: ( ruleJvmFormalParameter )
+            // InternalActionDSL.g:21092:3: ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1"
+
+
+    // $ANTLR start "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2"
+    // InternalActionDSL.g:21101:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
+    public final void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21105:1: ( ( ( '|' ) ) )
+            // InternalActionDSL.g:21106:2: ( ( '|' ) )
+            {
+            // InternalActionDSL.g:21106:2: ( ( '|' ) )
+            // InternalActionDSL.g:21107:3: ( '|' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+            // InternalActionDSL.g:21108:3: ( '|' )
+            // InternalActionDSL.g:21109:4: '|'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+            match(input,138,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2"
+
+
+    // $ANTLR start "rule__XShortClosure__ExpressionAssignment_1"
+    // InternalActionDSL.g:21120:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21124:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21125:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21125:2: ( ruleXExpression )
+            // InternalActionDSL.g:21126:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XShortClosure__ExpressionAssignment_1"
+
+
+    // $ANTLR start "rule__XIfExpression__IfAssignment_3"
+    // InternalActionDSL.g:21135:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__IfAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21139:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21140:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21140:2: ( ruleXExpression )
+            // InternalActionDSL.g:21141:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__IfAssignment_3"
+
+
+    // $ANTLR start "rule__XIfExpression__ThenAssignment_5"
+    // InternalActionDSL.g:21150:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__ThenAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21154:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21155:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21155:2: ( ruleXExpression )
+            // InternalActionDSL.g:21156:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__ThenAssignment_5"
+
+
+    // $ANTLR start "rule__XIfExpression__ElseAssignment_6_1"
+    // InternalActionDSL.g:21165:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21169:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21170:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21170:2: ( ruleXExpression )
+            // InternalActionDSL.g:21171:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XIfExpression__ElseAssignment_6_1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1"
+    // InternalActionDSL.g:21180:1: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21184:1: ( ( ruleJvmFormalParameter ) )
+            // InternalActionDSL.g:21185:2: ( ruleJvmFormalParameter )
+            {
+            // InternalActionDSL.g:21185:2: ( ruleJvmFormalParameter )
+            // InternalActionDSL.g:21186:3: ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_0_1"
+    // InternalActionDSL.g:21195:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21199:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21200:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21200:2: ( ruleXExpression )
+            // InternalActionDSL.g:21201:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__SwitchAssignment_2_0_1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0"
+    // InternalActionDSL.g:21210:1: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21214:1: ( ( ruleJvmFormalParameter ) )
+            // InternalActionDSL.g:21215:2: ( ruleJvmFormalParameter )
+            {
+            // InternalActionDSL.g:21215:2: ( ruleJvmFormalParameter )
+            // InternalActionDSL.g:21216:3: ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0"
+
+
+    // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_1_1"
+    // InternalActionDSL.g:21225:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21229:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21230:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21230:2: ( ruleXExpression )
+            // InternalActionDSL.g:21231:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__SwitchAssignment_2_1_1"
+
+
+    // $ANTLR start "rule__XSwitchExpression__CasesAssignment_4"
+    // InternalActionDSL.g:21240:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
+    public final void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21244:1: ( ( ruleXCasePart ) )
+            // InternalActionDSL.g:21245:2: ( ruleXCasePart )
+            {
+            // InternalActionDSL.g:21245:2: ( ruleXCasePart )
+            // InternalActionDSL.g:21246:3: ruleXCasePart
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXCasePart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__CasesAssignment_4"
+
+
+    // $ANTLR start "rule__XSwitchExpression__DefaultAssignment_5_2"
+    // InternalActionDSL.g:21255:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21259:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21260:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21260:2: ( ruleXExpression )
+            // InternalActionDSL.g:21261:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__DefaultAssignment_5_2"
+
+
+    // $ANTLR start "rule__XCasePart__TypeGuardAssignment_1"
+    // InternalActionDSL.g:21270:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21274:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:21275:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:21275:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:21276:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__TypeGuardAssignment_1"
+
+
+    // $ANTLR start "rule__XCasePart__CaseAssignment_2_1"
+    // InternalActionDSL.g:21285:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
+    public final void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21289:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21290:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21290:2: ( ruleXExpression )
+            // InternalActionDSL.g:21291:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__CaseAssignment_2_1"
+
+
+    // $ANTLR start "rule__XCasePart__ThenAssignment_3_0_1"
+    // InternalActionDSL.g:21300:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
+    public final void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21304:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21305:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21305:2: ( ruleXExpression )
+            // InternalActionDSL.g:21306:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__ThenAssignment_3_0_1"
+
+
+    // $ANTLR start "rule__XCasePart__FallThroughAssignment_3_1"
+    // InternalActionDSL.g:21315:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
+    public final void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21319:1: ( ( ( ',' ) ) )
+            // InternalActionDSL.g:21320:2: ( ( ',' ) )
+            {
+            // InternalActionDSL.g:21320:2: ( ( ',' ) )
+            // InternalActionDSL.g:21321:3: ( ',' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+            // InternalActionDSL.g:21322:3: ( ',' )
+            // InternalActionDSL.g:21323:4: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+            match(input,103,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCasePart__FallThroughAssignment_3_1"
+
+
+    // $ANTLR start "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3"
+    // InternalActionDSL.g:21334:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21338:1: ( ( ruleJvmFormalParameter ) )
+            // InternalActionDSL.g:21339:2: ( ruleJvmFormalParameter )
+            {
+            // InternalActionDSL.g:21339:2: ( ruleJvmFormalParameter )
+            // InternalActionDSL.g:21340:3: ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3"
+
+
+    // $ANTLR start "rule__XForLoopExpression__ForExpressionAssignment_1"
+    // InternalActionDSL.g:21349:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21353:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21354:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21354:2: ( ruleXExpression )
+            // InternalActionDSL.g:21355:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__ForExpressionAssignment_1"
+
+
+    // $ANTLR start "rule__XForLoopExpression__EachExpressionAssignment_3"
+    // InternalActionDSL.g:21364:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21368:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21369:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21369:2: ( ruleXExpression )
+            // InternalActionDSL.g:21370:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XForLoopExpression__EachExpressionAssignment_3"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0"
+    // InternalActionDSL.g:21379:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21383:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalActionDSL.g:21384:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalActionDSL.g:21384:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalActionDSL.g:21385:3: ruleXExpressionOrVarDeclaration
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpressionOrVarDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1"
+    // InternalActionDSL.g:21394:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21398:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalActionDSL.g:21399:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalActionDSL.g:21399:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalActionDSL.g:21400:3: ruleXExpressionOrVarDeclaration
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpressionOrVarDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__ExpressionAssignment_5"
+    // InternalActionDSL.g:21409:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21413:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21414:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21414:2: ( ruleXExpression )
+            // InternalActionDSL.g:21415:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__ExpressionAssignment_5"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0"
+    // InternalActionDSL.g:21424:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21428:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21429:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21429:2: ( ruleXExpression )
+            // InternalActionDSL.g:21430:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1"
+    // InternalActionDSL.g:21439:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21443:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21444:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21444:2: ( ruleXExpression )
+            // InternalActionDSL.g:21445:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1"
+
+
+    // $ANTLR start "rule__XBasicForLoopExpression__EachExpressionAssignment_9"
+    // InternalActionDSL.g:21454:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21458:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21459:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21459:2: ( ruleXExpression )
+            // InternalActionDSL.g:21460:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBasicForLoopExpression__EachExpressionAssignment_9"
+
+
+    // $ANTLR start "rule__XWhileExpression__PredicateAssignment_3"
+    // InternalActionDSL.g:21469:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21473:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21474:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21474:2: ( ruleXExpression )
+            // InternalActionDSL.g:21475:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__PredicateAssignment_3"
+
+
+    // $ANTLR start "rule__XWhileExpression__BodyAssignment_5"
+    // InternalActionDSL.g:21484:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21488:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21489:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21489:2: ( ruleXExpression )
+            // InternalActionDSL.g:21490:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XWhileExpression__BodyAssignment_5"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__BodyAssignment_2"
+    // InternalActionDSL.g:21499:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21503:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21504:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21504:2: ( ruleXExpression )
+            // InternalActionDSL.g:21505:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__BodyAssignment_2"
+
+
+    // $ANTLR start "rule__XDoWhileExpression__PredicateAssignment_5"
+    // InternalActionDSL.g:21514:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21518:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21519:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21519:2: ( ruleXExpression )
+            // InternalActionDSL.g:21520:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XDoWhileExpression__PredicateAssignment_5"
+
+
+    // $ANTLR start "rule__XBlockExpression__ExpressionsAssignment_2_0"
+    // InternalActionDSL.g:21529:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21533:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalActionDSL.g:21534:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalActionDSL.g:21534:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalActionDSL.g:21535:3: ruleXExpressionOrVarDeclaration
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpressionOrVarDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__ExpressionsAssignment_2_0"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__WriteableAssignment_1_0"
+    // InternalActionDSL.g:21544:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
+    public final void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21548:1: ( ( ( 'var' ) ) )
+            // InternalActionDSL.g:21549:2: ( ( 'var' ) )
+            {
+            // InternalActionDSL.g:21549:2: ( ( 'var' ) )
+            // InternalActionDSL.g:21550:3: ( 'var' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+            // InternalActionDSL.g:21551:3: ( 'var' )
+            // InternalActionDSL.g:21552:4: 'var'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+            match(input,139,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__WriteableAssignment_1_0"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__TypeAssignment_2_0_0_0"
+    // InternalActionDSL.g:21563:1: rule__XVariableDeclaration__TypeAssignment_2_0_0_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__XVariableDeclaration__TypeAssignment_2_0_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21567:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:21568:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:21568:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:21569:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__TypeAssignment_2_0_0_0"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_0_0_1"
+    // InternalActionDSL.g:21578:1: rule__XVariableDeclaration__NameAssignment_2_0_0_1 : ( ruleValidID ) ;
+    public final void rule__XVariableDeclaration__NameAssignment_2_0_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21582:1: ( ( ruleValidID ) )
+            // InternalActionDSL.g:21583:2: ( ruleValidID )
+            {
+            // InternalActionDSL.g:21583:2: ( ruleValidID )
+            // InternalActionDSL.g:21584:3: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__NameAssignment_2_0_0_1"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_1"
+    // InternalActionDSL.g:21593:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
+    public final void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21597:1: ( ( ruleValidID ) )
+            // InternalActionDSL.g:21598:2: ( ruleValidID )
+            {
+            // InternalActionDSL.g:21598:2: ( ruleValidID )
+            // InternalActionDSL.g:21599:3: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__NameAssignment_2_1"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__RightAssignment_3_1"
+    // InternalActionDSL.g:21608:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
+    public final void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21612:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21613:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21613:2: ( ruleXExpression )
+            // InternalActionDSL.g:21614:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__RightAssignment_3_1"
+
+
+    // $ANTLR start "rule__JvmFormalParameter__ParameterTypeAssignment_0"
+    // InternalActionDSL.g:21623:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21627:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:21628:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:21628:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:21629:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmFormalParameter__ParameterTypeAssignment_0"
+
+
+    // $ANTLR start "rule__JvmFormalParameter__NameAssignment_1"
+    // InternalActionDSL.g:21638:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    public final void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21642:1: ( ( ruleValidID ) )
+            // InternalActionDSL.g:21643:2: ( ruleValidID )
+            {
+            // InternalActionDSL.g:21643:2: ( ruleValidID )
+            // InternalActionDSL.g:21644:3: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmFormalParameter__NameAssignment_1"
+
+
+    // $ANTLR start "rule__FullJvmFormalParameter__ParameterTypeAssignment_0"
+    // InternalActionDSL.g:21653:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21657:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:21658:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:21658:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:21659:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FullJvmFormalParameter__ParameterTypeAssignment_0"
+
+
+    // $ANTLR start "rule__FullJvmFormalParameter__NameAssignment_1"
+    // InternalActionDSL.g:21668:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    public final void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21672:1: ( ( ruleValidID ) )
+            // InternalActionDSL.g:21673:2: ( ruleValidID )
+            {
+            // InternalActionDSL.g:21673:2: ( ruleValidID )
+            // InternalActionDSL.g:21674:3: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FullJvmFormalParameter__NameAssignment_1"
+
+
+    // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_1"
+    // InternalActionDSL.g:21683:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21687:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:21688:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:21688:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:21689:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__TypeArgumentsAssignment_1_1"
+
+
+    // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1"
+    // InternalActionDSL.g:21698:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21702:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:21703:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:21703:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:21704:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1"
+
+
+    // $ANTLR start "rule__XFeatureCall__FeatureAssignment_2"
+    // InternalActionDSL.g:21713:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
+    public final void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21717:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalActionDSL.g:21718:2: ( ( ruleIdOrSuper ) )
+            {
+            // InternalActionDSL.g:21718:2: ( ( ruleIdOrSuper ) )
+            // InternalActionDSL.g:21719:3: ( ruleIdOrSuper )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
+            }
+            // InternalActionDSL.g:21720:3: ( ruleIdOrSuper )
+            // InternalActionDSL.g:21721:4: ruleIdOrSuper
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_2_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__FeatureAssignment_2"
+
+
+    // $ANTLR start "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0"
+    // InternalActionDSL.g:21732:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
+    public final void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21736:1: ( ( ( '(' ) ) )
+            // InternalActionDSL.g:21737:2: ( ( '(' ) )
+            {
+            // InternalActionDSL.g:21737:2: ( ( '(' ) )
+            // InternalActionDSL.g:21738:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+            // InternalActionDSL.g:21739:3: ( '(' )
+            // InternalActionDSL.g:21740:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0"
+
+
+    // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0"
+    // InternalActionDSL.g:21751:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21755:1: ( ( ruleXShortClosure ) )
+            // InternalActionDSL.g:21756:2: ( ruleXShortClosure )
+            {
+            // InternalActionDSL.g:21756:2: ( ruleXShortClosure )
+            // InternalActionDSL.g:21757:3: ruleXShortClosure
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXShortClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0"
+
+
+    // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0"
+    // InternalActionDSL.g:21766:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 : ( ruleXExpression ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21770:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21771:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21771:2: ( ruleXExpression )
+            // InternalActionDSL.g:21772:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0"
+
+
+    // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1"
+    // InternalActionDSL.g:21781:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 : ( ruleXExpression ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21785:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21786:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21786:2: ( ruleXExpression )
+            // InternalActionDSL.g:21787:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1"
+
+
+    // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_4"
+    // InternalActionDSL.g:21796:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21800:1: ( ( ruleXClosure ) )
+            // InternalActionDSL.g:21801:2: ( ruleXClosure )
+            {
+            // InternalActionDSL.g:21801:2: ( ruleXClosure )
+            // InternalActionDSL.g:21802:3: ruleXClosure
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFeatureCall__FeatureCallArgumentsAssignment_4"
+
+
+    // $ANTLR start "rule__XConstructorCall__ConstructorAssignment_2"
+    // InternalActionDSL.g:21811:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21815:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalActionDSL.g:21816:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalActionDSL.g:21816:2: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:21817:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
+            }
+            // InternalActionDSL.g:21818:3: ( ruleQualifiedName )
+            // InternalActionDSL.g:21819:4: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__ConstructorAssignment_2"
+
+
+    // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_1"
+    // InternalActionDSL.g:21830:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21834:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:21835:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:21835:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:21836:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__TypeArgumentsAssignment_3_1"
+
+
+    // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1"
+    // InternalActionDSL.g:21845:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21849:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:21850:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:21850:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:21851:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1"
+
+
+    // $ANTLR start "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0"
+    // InternalActionDSL.g:21860:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
+    public final void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21864:1: ( ( ( '(' ) ) )
+            // InternalActionDSL.g:21865:2: ( ( '(' ) )
+            {
+            // InternalActionDSL.g:21865:2: ( ( '(' ) )
+            // InternalActionDSL.g:21866:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+            // InternalActionDSL.g:21867:3: ( '(' )
+            // InternalActionDSL.g:21868:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+            match(input,101,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0"
+
+
+    // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_0"
+    // InternalActionDSL.g:21879:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21883:1: ( ( ruleXShortClosure ) )
+            // InternalActionDSL.g:21884:2: ( ruleXShortClosure )
+            {
+            // InternalActionDSL.g:21884:2: ( ruleXShortClosure )
+            // InternalActionDSL.g:21885:3: ruleXShortClosure
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXShortClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__ArgumentsAssignment_4_1_0"
+
+
+    // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0"
+    // InternalActionDSL.g:21894:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 : ( ruleXExpression ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_4_1_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21898:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21899:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21899:2: ( ruleXExpression )
+            // InternalActionDSL.g:21900:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0"
+
+
+    // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1"
+    // InternalActionDSL.g:21909:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 : ( ruleXExpression ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21913:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:21914:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:21914:2: ( ruleXExpression )
+            // InternalActionDSL.g:21915:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1"
+
+
+    // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_5"
+    // InternalActionDSL.g:21924:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21928:1: ( ( ruleXClosure ) )
+            // InternalActionDSL.g:21929:2: ( ruleXClosure )
+            {
+            // InternalActionDSL.g:21929:2: ( ruleXClosure )
+            // InternalActionDSL.g:21930:3: ruleXClosure
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__ArgumentsAssignment_5"
+
+
+    // $ANTLR start "rule__XBooleanLiteral__IsTrueAssignment_1_1"
+    // InternalActionDSL.g:21939:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
+    public final void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21943:1: ( ( ( 'true' ) ) )
+            // InternalActionDSL.g:21944:2: ( ( 'true' ) )
+            {
+            // InternalActionDSL.g:21944:2: ( ( 'true' ) )
+            // InternalActionDSL.g:21945:3: ( 'true' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+            // InternalActionDSL.g:21946:3: ( 'true' )
+            // InternalActionDSL.g:21947:4: 'true'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+            match(input,140,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBooleanLiteral__IsTrueAssignment_1_1"
+
+
+    // $ANTLR start "rule__XNumberLiteral__ValueAssignment_1"
+    // InternalActionDSL.g:21958:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
+    public final void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21962:1: ( ( ruleNumber ) )
+            // InternalActionDSL.g:21963:2: ( ruleNumber )
+            {
+            // InternalActionDSL.g:21963:2: ( ruleNumber )
+            // InternalActionDSL.g:21964:3: ruleNumber
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XNumberLiteral__ValueAssignment_1"
+
+
+    // $ANTLR start "rule__XStringLiteral__ValueAssignment_1"
+    // InternalActionDSL.g:21973:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21977:1: ( ( RULE_STRING ) )
+            // InternalActionDSL.g:21978:2: ( RULE_STRING )
+            {
+            // InternalActionDSL.g:21978:2: ( RULE_STRING )
+            // InternalActionDSL.g:21979:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XStringLiteral__ValueAssignment_1"
+
+
+    // $ANTLR start "rule__XTypeLiteral__TypeAssignment_3"
+    // InternalActionDSL.g:21988:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:21992:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalActionDSL.g:21993:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalActionDSL.g:21993:2: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:21994:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+            }
+            // InternalActionDSL.g:21995:3: ( ruleQualifiedName )
+            // InternalActionDSL.g:21996:4: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeQualifiedNameParserRuleCall_3_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeQualifiedNameParserRuleCall_3_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__TypeAssignment_3"
+
+
+    // $ANTLR start "rule__XTypeLiteral__ArrayDimensionsAssignment_4"
+    // InternalActionDSL.g:22007:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
+    public final void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22011:1: ( ( ruleArrayBrackets ) )
+            // InternalActionDSL.g:22012:2: ( ruleArrayBrackets )
+            {
+            // InternalActionDSL.g:22012:2: ( ruleArrayBrackets )
+            // InternalActionDSL.g:22013:3: ruleArrayBrackets
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleArrayBrackets();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__ArrayDimensionsAssignment_4"
+
+
+    // $ANTLR start "rule__XThrowExpression__ExpressionAssignment_2"
+    // InternalActionDSL.g:22022:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22026:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:22027:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:22027:2: ( ruleXExpression )
+            // InternalActionDSL.g:22028:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XThrowExpression__ExpressionAssignment_2"
+
+
+    // $ANTLR start "rule__XReturnExpression__ExpressionAssignment_2"
+    // InternalActionDSL.g:22037:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22041:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:22042:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:22042:2: ( ruleXExpression )
+            // InternalActionDSL.g:22043:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XReturnExpression__ExpressionAssignment_2"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__ExpressionAssignment_2"
+    // InternalActionDSL.g:22052:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22056:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:22057:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:22057:2: ( ruleXExpression )
+            // InternalActionDSL.g:22058:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__ExpressionAssignment_2"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0"
+    // InternalActionDSL.g:22067:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
+    public final void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22071:1: ( ( ruleXCatchClause ) )
+            // InternalActionDSL.g:22072:2: ( ruleXCatchClause )
+            {
+            // InternalActionDSL.g:22072:2: ( ruleXCatchClause )
+            // InternalActionDSL.g:22073:3: ruleXCatchClause
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXCatchClause();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1"
+    // InternalActionDSL.g:22082:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 : ( ruleXExpression ) ;
+    public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22086:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:22087:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:22087:2: ( ruleXExpression )
+            // InternalActionDSL.g:22088:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1"
+
+
+    // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1"
+    // InternalActionDSL.g:22097:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22101:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:22102:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:22102:2: ( ruleXExpression )
+            // InternalActionDSL.g:22103:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__ParamAssignment_1"
+    // InternalActionDSL.g:22112:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22116:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:22117:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:22117:2: ( ruleXExpression )
+            // InternalActionDSL.g:22118:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__ParamAssignment_1"
+
+
+    // $ANTLR start "rule__XSynchronizedExpression__ExpressionAssignment_3"
+    // InternalActionDSL.g:22127:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22131:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:22132:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:22132:2: ( ruleXExpression )
+            // InternalActionDSL.g:22133:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSynchronizedExpression__ExpressionAssignment_3"
+
+
+    // $ANTLR start "rule__XCatchClause__DeclaredParamAssignment_2"
+    // InternalActionDSL.g:22142:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
+    public final void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22146:1: ( ( ruleFullJvmFormalParameter ) )
+            // InternalActionDSL.g:22147:2: ( ruleFullJvmFormalParameter )
+            {
+            // InternalActionDSL.g:22147:2: ( ruleFullJvmFormalParameter )
+            // InternalActionDSL.g:22148:3: ruleFullJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleFullJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__DeclaredParamAssignment_2"
+
+
+    // $ANTLR start "rule__XCatchClause__ExpressionAssignment_4"
+    // InternalActionDSL.g:22157:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
+    public final void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22161:1: ( ( ruleXExpression ) )
+            // InternalActionDSL.g:22162:2: ( ruleXExpression )
+            {
+            // InternalActionDSL.g:22162:2: ( ruleXExpression )
+            // InternalActionDSL.g:22163:3: ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XCatchClause__ExpressionAssignment_4"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0"
+    // InternalActionDSL.g:22172:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22176:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:22177:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:22177:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:22178:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1"
+    // InternalActionDSL.g:22187:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22191:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:22192:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:22192:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:22193:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1"
+
+
+    // $ANTLR start "rule__XFunctionTypeRef__ReturnTypeAssignment_2"
+    // InternalActionDSL.g:22202:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
+    public final void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22206:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:22207:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:22207:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:22208:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XFunctionTypeRef__ReturnTypeAssignment_2"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_0"
+    // InternalActionDSL.g:22217:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22221:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalActionDSL.g:22222:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalActionDSL.g:22222:2: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:22223:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
+            }
+            // InternalActionDSL.g:22224:3: ( ruleQualifiedName )
+            // InternalActionDSL.g:22225:4: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeQualifiedNameParserRuleCall_0_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeQualifiedNameParserRuleCall_0_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__TypeAssignment_0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1"
+    // InternalActionDSL.g:22236:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22240:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:22241:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:22241:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:22242:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1"
+    // InternalActionDSL.g:22251:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22255:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:22256:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:22256:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:22257:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1"
+    // InternalActionDSL.g:22266:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
+    public final void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22270:1: ( ( ( ruleValidID ) ) )
+            // InternalActionDSL.g:22271:2: ( ( ruleValidID ) )
+            {
+            // InternalActionDSL.g:22271:2: ( ( ruleValidID ) )
+            // InternalActionDSL.g:22272:3: ( ruleValidID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
+            }
+            // InternalActionDSL.g:22273:3: ( ruleValidID )
+            // InternalActionDSL.g:22274:4: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeValidIDParserRuleCall_1_4_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeValidIDParserRuleCall_1_4_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1"
+    // InternalActionDSL.g:22285:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22289:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:22290:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:22290:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:22291:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1"
+    // InternalActionDSL.g:22300:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22304:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalActionDSL.g:22305:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalActionDSL.g:22305:2: ( ruleJvmArgumentTypeReference )
+            // InternalActionDSL.g:22306:3: ruleJvmArgumentTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0"
+    // InternalActionDSL.g:22315:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22319:1: ( ( ruleJvmUpperBound ) )
+            // InternalActionDSL.g:22320:2: ( ruleJvmUpperBound )
+            {
+            // InternalActionDSL.g:22320:2: ( ruleJvmUpperBound )
+            // InternalActionDSL.g:22321:3: ruleJvmUpperBound
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmUpperBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1"
+    // InternalActionDSL.g:22330:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22334:1: ( ( ruleJvmUpperBoundAnded ) )
+            // InternalActionDSL.g:22335:2: ( ruleJvmUpperBoundAnded )
+            {
+            // InternalActionDSL.g:22335:2: ( ruleJvmUpperBoundAnded )
+            // InternalActionDSL.g:22336:3: ruleJvmUpperBoundAnded
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmUpperBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0"
+    // InternalActionDSL.g:22345:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22349:1: ( ( ruleJvmLowerBound ) )
+            // InternalActionDSL.g:22350:2: ( ruleJvmLowerBound )
+            {
+            // InternalActionDSL.g:22350:2: ( ruleJvmLowerBound )
+            // InternalActionDSL.g:22351:3: ruleJvmLowerBound
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmLowerBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0"
+
+
+    // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1"
+    // InternalActionDSL.g:22360:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22364:1: ( ( ruleJvmLowerBoundAnded ) )
+            // InternalActionDSL.g:22365:2: ( ruleJvmLowerBoundAnded )
+            {
+            // InternalActionDSL.g:22365:2: ( ruleJvmLowerBoundAnded )
+            // InternalActionDSL.g:22366:3: ruleJvmLowerBoundAnded
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmLowerBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1"
+
+
+    // $ANTLR start "rule__JvmUpperBound__TypeReferenceAssignment_1"
+    // InternalActionDSL.g:22375:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22379:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:22380:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:22380:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:22381:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBound__TypeReferenceAssignment_1"
+
+
+    // $ANTLR start "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1"
+    // InternalActionDSL.g:22390:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22394:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:22395:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:22395:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:22396:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1"
+
+
+    // $ANTLR start "rule__JvmLowerBound__TypeReferenceAssignment_1"
+    // InternalActionDSL.g:22405:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22409:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:22410:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:22410:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:22411:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBound__TypeReferenceAssignment_1"
+
+
+    // $ANTLR start "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1"
+    // InternalActionDSL.g:22420:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22424:1: ( ( ruleJvmTypeReference ) )
+            // InternalActionDSL.g:22425:2: ( ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:22425:2: ( ruleJvmTypeReference )
+            // InternalActionDSL.g:22426:3: ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1"
+
+
+    // $ANTLR start "rule__XImportSection__ImportDeclarationsAssignment"
+    // InternalActionDSL.g:22435:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
+    public final void rule__XImportSection__ImportDeclarationsAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalActionDSL.g:22439:1: ( ( ruleXImportDeclaration ) )
+            // InternalActionDSL.g:22440:2: ( ruleXImportDeclaration )
+            {
+            // InternalActionDSL.g:22440:2: ( ruleXImportDeclaration )
+            // InternalActionDSL.g:22441:3: ruleXImportDeclaration
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXImportDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportSection__ImportDeclarationsAssignment"
+
+    // $ANTLR start synpred16_InternalActionDSL
+    public final void synpred16_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2809:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
+        // InternalActionDSL.g:2809:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        {
+        // InternalActionDSL.g:2809:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        // InternalActionDSL.g:2810:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+        }
+        // InternalActionDSL.g:2811:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalActionDSL.g:2811:4: rule__XAnnotation__Group_3_1_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotation__Group_3_1_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred16_InternalActionDSL
+
+    // $ANTLR start synpred17_InternalActionDSL
+    public final void synpred17_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2830:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
+        // InternalActionDSL.g:2830:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        {
+        // InternalActionDSL.g:2830:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        // InternalActionDSL.g:2831:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+        }
+        // InternalActionDSL.g:2832:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        // InternalActionDSL.g:2832:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotationElementValueOrCommaList__Group_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred17_InternalActionDSL
+
+    // $ANTLR start synpred18_InternalActionDSL
+    public final void synpred18_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2851:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
+        // InternalActionDSL.g:2851:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        {
+        // InternalActionDSL.g:2851:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        // InternalActionDSL.g:2852:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+        }
+        // InternalActionDSL.g:2853:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalActionDSL.g:2853:4: rule__XAnnotationElementValue__Group_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotationElementValue__Group_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred18_InternalActionDSL
+
+    // $ANTLR start synpred43_InternalActionDSL
+    public final void synpred43_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3136:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
+        // InternalActionDSL.g:3136:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        {
+        // InternalActionDSL.g:3136:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        // InternalActionDSL.g:3137:3: ( rule__OpOther__Group_6_1_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
+        }
+        // InternalActionDSL.g:3138:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalActionDSL.g:3138:4: rule__OpOther__Group_6_1_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__OpOther__Group_6_1_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred43_InternalActionDSL
+
+    // $ANTLR start synpred44_InternalActionDSL
+    public final void synpred44_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3142:2: ( ( '<' ) )
+        // InternalActionDSL.g:3142:2: ( '<' )
+        {
+        // InternalActionDSL.g:3142:2: ( '<' )
+        // InternalActionDSL.g:3143:3: '<'
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+        }
+        match(input,29,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred44_InternalActionDSL
+
+    // $ANTLR start synpred57_InternalActionDSL
+    public final void synpred57_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3355:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
+        // InternalActionDSL.g:3355:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        {
+        // InternalActionDSL.g:3355:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        // InternalActionDSL.g:3356:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
+        }
+        // InternalActionDSL.g:3357:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalActionDSL.g:3357:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred57_InternalActionDSL
+
+    // $ANTLR start synpred65_InternalActionDSL
+    public final void synpred65_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3418:2: ( ( ( ruleXForLoopExpression ) ) )
+        // InternalActionDSL.g:3418:2: ( ( ruleXForLoopExpression ) )
+        {
+        // InternalActionDSL.g:3418:2: ( ( ruleXForLoopExpression ) )
+        // InternalActionDSL.g:3419:3: ( ruleXForLoopExpression )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+        }
+        // InternalActionDSL.g:3420:3: ( ruleXForLoopExpression )
+        // InternalActionDSL.g:3420:4: ruleXForLoopExpression
+        {
+        pushFollow(FOLLOW_2);
+        ruleXForLoopExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred65_InternalActionDSL
+
+    // $ANTLR start synpred66_InternalActionDSL
+    public final void synpred66_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3424:2: ( ( ruleXBasicForLoopExpression ) )
+        // InternalActionDSL.g:3424:2: ( ruleXBasicForLoopExpression )
+        {
+        // InternalActionDSL.g:3424:2: ( ruleXBasicForLoopExpression )
+        // InternalActionDSL.g:3425:3: ruleXBasicForLoopExpression
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
+        }
+        pushFollow(FOLLOW_2);
+        ruleXBasicForLoopExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred66_InternalActionDSL
+
+    // $ANTLR start synpred79_InternalActionDSL
+    public final void synpred79_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3547:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
+        // InternalActionDSL.g:3547:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        {
+        // InternalActionDSL.g:3547:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        // InternalActionDSL.g:3548:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
+        }
+        // InternalActionDSL.g:3549:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalActionDSL.g:3549:4: rule__XSwitchExpression__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XSwitchExpression__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred79_InternalActionDSL
+
+    // $ANTLR start synpred83_InternalActionDSL
+    public final void synpred83_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3631:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
+        // InternalActionDSL.g:3631:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        {
+        // InternalActionDSL.g:3631:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        // InternalActionDSL.g:3632:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
+        }
+        // InternalActionDSL.g:3633:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalActionDSL.g:3633:4: rule__XVariableDeclaration__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XVariableDeclaration__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred83_InternalActionDSL
+
+    // $ANTLR start synpred84_InternalActionDSL
+    public final void synpred84_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3652:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
+        // InternalActionDSL.g:3652:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        {
+        // InternalActionDSL.g:3652:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        // InternalActionDSL.g:3653:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
+        }
+        // InternalActionDSL.g:3654:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalActionDSL.g:3654:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred84_InternalActionDSL
+
+    // $ANTLR start synpred90_InternalActionDSL
+    public final void synpred90_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3733:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
+        // InternalActionDSL.g:3733:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        {
+        // InternalActionDSL.g:3733:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        // InternalActionDSL.g:3734:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
+        }
+        // InternalActionDSL.g:3735:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalActionDSL.g:3735:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__ArgumentsAssignment_4_1_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred90_InternalActionDSL
+
+    // $ANTLR start synpred146_InternalActionDSL
+    public final void synpred146_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:7965:3: ( rule__XAssignment__Group_1_1__0 )
+        // InternalActionDSL.g:7965:3: rule__XAssignment__Group_1_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAssignment__Group_1_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred146_InternalActionDSL
+
+    // $ANTLR start synpred148_InternalActionDSL
+    public final void synpred148_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:8316:3: ( rule__XOrExpression__Group_1__0 )
+        // InternalActionDSL.g:8316:3: rule__XOrExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XOrExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred148_InternalActionDSL
+
+    // $ANTLR start synpred149_InternalActionDSL
+    public final void synpred149_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:8505:3: ( rule__XAndExpression__Group_1__0 )
+        // InternalActionDSL.g:8505:3: rule__XAndExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAndExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred149_InternalActionDSL
+
+    // $ANTLR start synpred150_InternalActionDSL
+    public final void synpred150_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:8694:3: ( rule__XEqualityExpression__Group_1__0 )
+        // InternalActionDSL.g:8694:3: rule__XEqualityExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XEqualityExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred150_InternalActionDSL
+
+    // $ANTLR start synpred151_InternalActionDSL
+    public final void synpred151_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:8883:3: ( rule__XRelationalExpression__Alternatives_1 )
+        // InternalActionDSL.g:8883:3: rule__XRelationalExpression__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XRelationalExpression__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred151_InternalActionDSL
+
+    // $ANTLR start synpred152_InternalActionDSL
+    public final void synpred152_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:9261:3: ( rule__XOtherOperatorExpression__Group_1__0 )
+        // InternalActionDSL.g:9261:3: rule__XOtherOperatorExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XOtherOperatorExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred152_InternalActionDSL
+
+    // $ANTLR start synpred153_InternalActionDSL
+    public final void synpred153_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:9774:3: ( rule__XAdditiveExpression__Group_1__0 )
+        // InternalActionDSL.g:9774:3: rule__XAdditiveExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAdditiveExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred153_InternalActionDSL
+
+    // $ANTLR start synpred154_InternalActionDSL
+    public final void synpred154_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:9963:3: ( rule__XMultiplicativeExpression__Group_1__0 )
+        // InternalActionDSL.g:9963:3: rule__XMultiplicativeExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMultiplicativeExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred154_InternalActionDSL
+
+    // $ANTLR start synpred155_InternalActionDSL
+    public final void synpred155_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:10233:3: ( rule__XCastedExpression__Group_1__0 )
+        // InternalActionDSL.g:10233:3: rule__XCastedExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XCastedExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred155_InternalActionDSL
+
+    // $ANTLR start synpred156_InternalActionDSL
+    public final void synpred156_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:10422:3: ( rule__XPostfixOperation__Group_1__0 )
+        // InternalActionDSL.g:10422:3: rule__XPostfixOperation__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XPostfixOperation__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred156_InternalActionDSL
+
+    // $ANTLR start synpred157_InternalActionDSL
+    public final void synpred157_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:10557:3: ( rule__XMemberFeatureCall__Alternatives_1 )
+        // InternalActionDSL.g:10557:3: rule__XMemberFeatureCall__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred157_InternalActionDSL
+
+    // $ANTLR start synpred159_InternalActionDSL
+    public final void synpred159_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:10855:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
+        // InternalActionDSL.g:10855:3: rule__XMemberFeatureCall__Group_1_1_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__Group_1_1_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred159_InternalActionDSL
+
+    // $ANTLR start synpred160_InternalActionDSL
+    public final void synpred160_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:10881:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
+        // InternalActionDSL.g:10881:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred160_InternalActionDSL
+
+    // $ANTLR start synpred168_InternalActionDSL
+    public final void synpred168_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:11854:3: ( rule__XClosure__Group_1__0 )
+        // InternalActionDSL.g:11854:3: rule__XClosure__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XClosure__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred168_InternalActionDSL
+
+    // $ANTLR start synpred175_InternalActionDSL
+    public final void synpred175_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:12825:3: ( rule__XIfExpression__Group_6__0 )
+        // InternalActionDSL.g:12825:3: rule__XIfExpression__Group_6__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XIfExpression__Group_6__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred175_InternalActionDSL
+
+    // $ANTLR start synpred178_InternalActionDSL
+    public final void synpred178_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:13285:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
+        // InternalActionDSL.g:13285:3: rule__XSwitchExpression__Group_2_1_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XSwitchExpression__Group_2_1_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred178_InternalActionDSL
+
+    // $ANTLR start synpred191_InternalActionDSL
+    public final void synpred191_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:15418:3: ( rule__XFeatureCall__Group_3__0 )
+        // InternalActionDSL.g:15418:3: rule__XFeatureCall__Group_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__Group_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred191_InternalActionDSL
+
+    // $ANTLR start synpred192_InternalActionDSL
+    public final void synpred192_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:15444:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
+        // InternalActionDSL.g:15444:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred192_InternalActionDSL
+
+    // $ANTLR start synpred196_InternalActionDSL
+    public final void synpred196_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:15904:3: ( rule__XConstructorCall__Group_3__0 )
+        // InternalActionDSL.g:15904:3: rule__XConstructorCall__Group_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__Group_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred196_InternalActionDSL
+
+    // $ANTLR start synpred197_InternalActionDSL
+    public final void synpred197_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:15931:3: ( rule__XConstructorCall__Group_4__0 )
+        // InternalActionDSL.g:15931:3: rule__XConstructorCall__Group_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__Group_4__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred197_InternalActionDSL
+
+    // $ANTLR start synpred198_InternalActionDSL
+    public final void synpred198_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:15957:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
+        // InternalActionDSL.g:15957:3: rule__XConstructorCall__ArgumentsAssignment_5
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__ArgumentsAssignment_5();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred198_InternalActionDSL
+
+    // $ANTLR start synpred203_InternalActionDSL
+    public final void synpred203_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:16848:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
+        // InternalActionDSL.g:16848:3: rule__XReturnExpression__ExpressionAssignment_2
+        {
+        pushFollow(FOLLOW_2);
+        rule__XReturnExpression__ExpressionAssignment_2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred203_InternalActionDSL
+
+    // $ANTLR start synpred204_InternalActionDSL
+    public final void synpred204_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:16990:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+        // InternalActionDSL.g:16990:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred204_InternalActionDSL
+
+    // $ANTLR start synpred205_InternalActionDSL
+    public final void synpred205_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:17017:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
+        // InternalActionDSL.g:17017:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XTryCatchFinallyExpression__Group_3_0_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred205_InternalActionDSL
+
+    // $ANTLR start synpred206_InternalActionDSL
+    public final void synpred206_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:17530:3: ( rule__QualifiedName__Group_1__0 )
+        // InternalActionDSL.g:17530:3: rule__QualifiedName__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__QualifiedName__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred206_InternalActionDSL
+
+    // $ANTLR start synpred208_InternalActionDSL
+    public final void synpred208_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:17746:3: ( rule__JvmTypeReference__Group_0_1__0 )
+        // InternalActionDSL.g:17746:3: rule__JvmTypeReference__Group_0_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmTypeReference__Group_0_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred208_InternalActionDSL
+
+    // $ANTLR start synpred212_InternalActionDSL
+    public final void synpred212_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:18205:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
+        // InternalActionDSL.g:18205:3: rule__JvmParameterizedTypeReference__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmParameterizedTypeReference__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred212_InternalActionDSL
+
+    // $ANTLR start synpred214_InternalActionDSL
+    public final void synpred214_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:18340:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
+        // InternalActionDSL.g:18340:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmParameterizedTypeReference__Group_1_4__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred214_InternalActionDSL
+
+    // $ANTLR start synpred215_InternalActionDSL
+    public final void synpred215_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:18475:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
+        // InternalActionDSL.g:18475:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmParameterizedTypeReference__Group_1_4_2__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred215_InternalActionDSL
+
+    // Delegated rules
+
+    public final boolean synpred84_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred84_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred205_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred205_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred198_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred198_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred215_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred215_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred208_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred208_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred212_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred212_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred43_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred43_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred16_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred16_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred203_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred203_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred17_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred17_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred155_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred155_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred168_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred168_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred178_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred178_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred44_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred44_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred152_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred152_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred175_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred175_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred57_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred57_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred148_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred148_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred192_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred192_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred206_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred206_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred156_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred156_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred191_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred191_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred90_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred90_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred159_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred159_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred65_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred65_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred214_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred214_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred146_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred146_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred153_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred153_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred204_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred204_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred83_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred83_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred149_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred149_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred196_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred196_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred151_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred151_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred154_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred154_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred79_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred79_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred160_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred160_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred66_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred66_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred157_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred157_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred197_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred197_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred18_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred18_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred150_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred150_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+    protected DFA5 dfa5 = new DFA5(this);
+    protected DFA7 dfa7 = new DFA7(this);
+    protected DFA8 dfa8 = new DFA8(this);
+    protected DFA9 dfa9 = new DFA9(this);
+    protected DFA16 dfa16 = new DFA16(this);
+    protected DFA24 dfa24 = new DFA24(this);
+    protected DFA27 dfa27 = new DFA27(this);
+    protected DFA28 dfa28 = new DFA28(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA36 dfa36 = new DFA36(this);
+    protected DFA39 dfa39 = new DFA39(this);
+    protected DFA80 dfa80 = new DFA80(this);
+    protected DFA86 dfa86 = new DFA86(this);
+    protected DFA93 dfa93 = new DFA93(this);
+    protected DFA94 dfa94 = new DFA94(this);
+    protected DFA102 dfa102 = new DFA102(this);
+    protected DFA112 dfa112 = new DFA112(this);
+    protected DFA125 dfa125 = new DFA125(this);
+    protected DFA126 dfa126 = new DFA126(this);
+    protected DFA130 dfa130 = new DFA130(this);
+    protected DFA131 dfa131 = new DFA131(this);
+    protected DFA132 dfa132 = new DFA132(this);
+    protected DFA137 dfa137 = new DFA137(this);
+    protected DFA146 dfa146 = new DFA146(this);
+    protected DFA149 dfa149 = new DFA149(this);
+    static final String dfa_1s = "\10\uffff";
+    static final String dfa_2s = "\2\uffff\1\5\3\uffff\1\5\1\uffff";
+    static final String dfa_3s = "\1\4\1\uffff\1\55\1\uffff\1\4\1\uffff\1\55\1\uffff";
+    static final String dfa_4s = "\1\u0087\1\uffff\1\143\1\uffff\1\46\1\uffff\1\143\1\uffff";
+    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\uffff\1\3";
+    static final String dfa_6s = "\10\uffff}>";
+    static final String[] dfa_7s = {
+            "\1\2\53\uffff\1\1\126\uffff\1\3",
+            "",
+            "\1\4\3\uffff\1\5\34\uffff\1\5\24\uffff\1\5",
+            "",
+            "\1\6\41\uffff\1\7",
+            "",
+            "\1\4\3\uffff\1\5\34\uffff\1\5\24\uffff\1\5",
+            ""
+    };
+
+    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
+    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
+    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
+    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
+    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
+    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
+    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
+
+    class DFA5 extends DFA {
+
+        public DFA5(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 5;
+            this.eot = dfa_1;
+            this.eof = dfa_2;
+            this.min = dfa_3;
+            this.max = dfa_4;
+            this.accept = dfa_5;
+            this.special = dfa_6;
+            this.transition = dfa_7;
+        }
+        public String getDescription() {
+            return "2750:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );";
+        }
+    }
+    static final String dfa_8s = "\43\uffff";
+    static final String dfa_9s = "\1\4\1\0\41\uffff";
+    static final String dfa_10s = "\1\u008c\1\0\41\uffff";
+    static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\1";
+    static final String dfa_12s = "\1\uffff\1\0\41\uffff}>";
+    static final String[] dfa_13s = {
+            "\1\1\4\2\24\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\32\uffff\1\2\24\uffff\2\2\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\16\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_8 = DFA.unpackEncodedString(dfa_8s);
+    static final char[] dfa_9 = DFA.unpackEncodedStringToUnsignedChars(dfa_9s);
+    static final char[] dfa_10 = DFA.unpackEncodedStringToUnsignedChars(dfa_10s);
+    static final short[] dfa_11 = DFA.unpackEncodedString(dfa_11s);
+    static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
+    static final short[][] dfa_13 = unpackEncodedStringArray(dfa_13s);
+
+    class DFA7 extends DFA {
+
+        public DFA7(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 7;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_13;
+        }
+        public String getDescription() {
+            return "2804:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA7_1 = input.LA(1);
+
+                         
+                        int index7_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred16_InternalActionDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index7_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 7, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_14s = {
+            "\5\2\24\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\32\uffff\1\2\24\uffff\2\2\3\uffff\1\1\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\16\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s);
+
+    class DFA8 extends DFA {
+
+        public DFA8(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 8;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_14;
+        }
+        public String getDescription() {
+            return "2825:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA8_1 = input.LA(1);
+
+                         
+                        int index8_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred17_InternalActionDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index8_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 8, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA9 extends DFA {
+
+        public DFA9(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 9;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_14;
+        }
+        public String getDescription() {
+            return "2846:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA9_1 = input.LA(1);
+
+                         
+                        int index9_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred18_InternalActionDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index9_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 9, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_15s = "\13\uffff";
+    static final String dfa_16s = "\1\34\2\uffff\1\34\7\uffff";
+    static final String dfa_17s = "\1\43\2\uffff\1\40\7\uffff";
+    static final String dfa_18s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\6\1\3";
+    static final String dfa_19s = "\13\uffff}>";
+    static final String[] dfa_20s = {
+            "\1\3\1\6\1\1\1\2\1\4\1\5\1\7\1\10",
+            "",
+            "",
+            "\1\11\3\uffff\1\12",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_15 = DFA.unpackEncodedString(dfa_15s);
+    static final char[] dfa_16 = DFA.unpackEncodedStringToUnsignedChars(dfa_16s);
+    static final char[] dfa_17 = DFA.unpackEncodedStringToUnsignedChars(dfa_17s);
+    static final short[] dfa_18 = DFA.unpackEncodedString(dfa_18s);
+    static final short[] dfa_19 = DFA.unpackEncodedString(dfa_19s);
+    static final short[][] dfa_20 = unpackEncodedStringArray(dfa_20s);
+
+    class DFA16 extends DFA {
+
+        public DFA16(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 16;
+            this.eot = dfa_15;
+            this.eof = dfa_15;
+            this.min = dfa_16;
+            this.max = dfa_17;
+            this.accept = dfa_18;
+            this.special = dfa_19;
+            this.transition = dfa_20;
+        }
+        public String getDescription() {
+            return "3047:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+        }
+    }
+    static final String dfa_21s = "\12\uffff";
+    static final String dfa_22s = "\4\uffff\5\3\1\uffff";
+    static final String dfa_23s = "\1\55\2\4\1\uffff\5\4\1\uffff";
+    static final String dfa_24s = "\1\u0089\2\63\1\uffff\5\u008c\1\uffff";
+    static final String dfa_25s = "\3\uffff\1\2\5\uffff\1\1";
+    static final String dfa_26s = "\12\uffff}>";
+    static final String[] dfa_27s = {
+            "\1\1\132\uffff\1\2\1\3",
+            "\1\4\30\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\30\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\2\3\2\uffff\43\3\32\uffff\2\3\22\uffff\1\3\1\uffff\32\3\11\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\2\3\2\uffff\43\3\32\uffff\2\3\22\uffff\1\3\1\uffff\32\3\11\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\2\3\2\uffff\43\3\32\uffff\2\3\22\uffff\1\3\1\uffff\32\3\11\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\2\3\2\uffff\43\3\32\uffff\2\3\22\uffff\1\3\1\uffff\32\3\11\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\2\3\2\uffff\43\3\32\uffff\2\3\22\uffff\1\3\1\uffff\32\3\11\uffff\2\3\1\uffff\2\3",
+            ""
+    };
+
+    static final short[] dfa_21 = DFA.unpackEncodedString(dfa_21s);
+    static final short[] dfa_22 = DFA.unpackEncodedString(dfa_22s);
+    static final char[] dfa_23 = DFA.unpackEncodedStringToUnsignedChars(dfa_23s);
+    static final char[] dfa_24 = DFA.unpackEncodedStringToUnsignedChars(dfa_24s);
+    static final short[] dfa_25 = DFA.unpackEncodedString(dfa_25s);
+    static final short[] dfa_26 = DFA.unpackEncodedString(dfa_26s);
+    static final short[][] dfa_27 = unpackEncodedStringArray(dfa_27s);
+
+    class DFA24 extends DFA {
+
+        public DFA24(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 24;
+            this.eot = dfa_21;
+            this.eof = dfa_22;
+            this.min = dfa_23;
+            this.max = dfa_24;
+            this.accept = dfa_25;
+            this.special = dfa_26;
+            this.transition = dfa_27;
+        }
+        public String getDescription() {
+            return "3281:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+        }
+    }
+    static final String dfa_28s = "\1\4\2\0\40\uffff";
+    static final String dfa_29s = "\1\u008c\2\0\40\uffff";
+    static final String dfa_30s = "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String dfa_31s = "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] dfa_32s = {
+            "\1\1\4\5\24\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\32\uffff\1\5\25\uffff\1\2\3\uffff\2\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\14\uffff\1\3\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final char[] dfa_28 = DFA.unpackEncodedStringToUnsignedChars(dfa_28s);
+    static final char[] dfa_29 = DFA.unpackEncodedStringToUnsignedChars(dfa_29s);
+    static final short[] dfa_30 = DFA.unpackEncodedString(dfa_30s);
+    static final short[] dfa_31 = DFA.unpackEncodedString(dfa_31s);
+    static final short[][] dfa_32 = unpackEncodedStringArray(dfa_32s);
+
+    class DFA27 extends DFA {
+
+        public DFA27(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 27;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_28;
+            this.max = dfa_29;
+            this.accept = dfa_30;
+            this.special = dfa_31;
+            this.transition = dfa_32;
+        }
+        public String getDescription() {
+            return "3350:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA27_1 = input.LA(1);
+
+                         
+                        int index27_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred57_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index27_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA27_2 = input.LA(1);
+
+                         
+                        int index27_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred57_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index27_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 27, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_33s = "\40\uffff";
+    static final String dfa_34s = "\1\4\26\uffff\1\0\10\uffff";
+    static final String dfa_35s = "\1\u008c\26\uffff\1\0\10\uffff";
+    static final String dfa_36s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
+    static final String dfa_37s = "\27\uffff\1\0\10\uffff}>";
+    static final String[] dfa_38s = {
+            "\1\5\4\14\24\uffff\1\5\21\uffff\5\5\1\14\32\uffff\1\2\25\uffff\1\35\3\uffff\2\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\16\uffff\1\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_33 = DFA.unpackEncodedString(dfa_33s);
+    static final char[] dfa_34 = DFA.unpackEncodedStringToUnsignedChars(dfa_34s);
+    static final char[] dfa_35 = DFA.unpackEncodedStringToUnsignedChars(dfa_35s);
+    static final short[] dfa_36 = DFA.unpackEncodedString(dfa_36s);
+    static final short[] dfa_37 = DFA.unpackEncodedString(dfa_37s);
+    static final short[][] dfa_38 = unpackEncodedStringArray(dfa_38s);
+
+    class DFA28 extends DFA {
+
+        public DFA28(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 28;
+            this.eot = dfa_33;
+            this.eof = dfa_33;
+            this.min = dfa_34;
+            this.max = dfa_35;
+            this.accept = dfa_36;
+            this.special = dfa_37;
+            this.transition = dfa_38;
+        }
+        public String getDescription() {
+            return "3371:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA28_23 = input.LA(1);
+
+                         
+                        int index28_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred65_InternalActionDSL()) ) {s = 30;}
+
+                        else if ( (synpred66_InternalActionDSL()) ) {s = 31;}
+
+                         
+                        input.seek(index28_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 28, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_39s = {
+            "\5\2\24\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\32\uffff\1\2\25\uffff\1\1\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\16\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_39 = unpackEncodedStringArray(dfa_39s);
+
+    class DFA31 extends DFA {
+
+        public DFA31(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 31;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_39;
+        }
+        public String getDescription() {
+            return "3542:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA31_1 = input.LA(1);
+
+                         
+                        int index31_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred79_InternalActionDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index31_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 31, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA36 extends DFA {
+
+        public DFA36(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 36;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_28;
+            this.max = dfa_29;
+            this.accept = dfa_30;
+            this.special = dfa_31;
+            this.transition = dfa_32;
+        }
+        public String getDescription() {
+            return "3647:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA36_1 = input.LA(1);
+
+                         
+                        int index36_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred84_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index36_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA36_2 = input.LA(1);
+
+                         
+                        int index36_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred84_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index36_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 36, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA39 extends DFA {
+
+        public DFA39(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 39;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_28;
+            this.max = dfa_29;
+            this.accept = dfa_30;
+            this.special = dfa_31;
+            this.transition = dfa_32;
+        }
+        public String getDescription() {
+            return "3728:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA39_1 = input.LA(1);
+
+                         
+                        int index39_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred90_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index39_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA39_2 = input.LA(1);
+
+                         
+                        int index39_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred90_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index39_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 39, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_40s = "\1\10\11\uffff";
+    static final String dfa_41s = "\1\4\7\0\2\uffff";
+    static final String dfa_42s = "\1\u008c\7\0\2\uffff";
+    static final String dfa_43s = "\10\uffff\1\2\1\1";
+    static final String dfa_44s = "\1\uffff\1\0\1\3\1\4\1\5\1\1\1\2\1\6\2\uffff}>";
+    static final String[] dfa_45s = {
+            "\5\10\5\uffff\2\10\2\uffff\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\32\uffff\2\10\22\uffff\1\10\1\uffff\32\10\11\uffff\2\10\1\uffff\2\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+    static final short[] dfa_40 = DFA.unpackEncodedString(dfa_40s);
+    static final char[] dfa_41 = DFA.unpackEncodedStringToUnsignedChars(dfa_41s);
+    static final char[] dfa_42 = DFA.unpackEncodedStringToUnsignedChars(dfa_42s);
+    static final short[] dfa_43 = DFA.unpackEncodedString(dfa_43s);
+    static final short[] dfa_44 = DFA.unpackEncodedString(dfa_44s);
+    static final short[][] dfa_45 = unpackEncodedStringArray(dfa_45s);
+
+    class DFA80 extends DFA {
+
+        public DFA80(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 80;
+            this.eot = dfa_21;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_45;
+        }
+        public String getDescription() {
+            return "7965:2: ( rule__XAssignment__Group_1_1__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA80_1 = input.LA(1);
+
+                         
+                        int index80_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index80_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA80_5 = input.LA(1);
+
+                         
+                        int index80_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index80_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA80_6 = input.LA(1);
+
+                         
+                        int index80_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index80_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA80_2 = input.LA(1);
+
+                         
+                        int index80_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index80_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA80_3 = input.LA(1);
+
+                         
+                        int index80_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index80_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA80_4 = input.LA(1);
+
+                         
+                        int index80_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index80_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA80_7 = input.LA(1);
+
+                         
+                        int index80_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index80_7);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 80, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_46s = "\1\1\12\uffff";
+    static final String dfa_47s = "\1\4\1\uffff\10\0\1\uffff";
+    static final String dfa_48s = "\1\u008c\1\uffff\10\0\1\uffff";
+    static final String dfa_49s = "\1\uffff\1\2\10\uffff\1\1";
+    static final String dfa_50s = "\2\uffff\1\2\1\3\1\4\1\5\1\7\1\1\1\0\1\6\1\uffff}>";
+    static final String[] dfa_51s = {
+            "\5\1\5\uffff\2\1\2\uffff\12\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\21\1\32\uffff\2\1\22\uffff\1\1\1\uffff\32\1\11\uffff\2\1\1\uffff\2\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+    static final short[] dfa_46 = DFA.unpackEncodedString(dfa_46s);
+    static final char[] dfa_47 = DFA.unpackEncodedStringToUnsignedChars(dfa_47s);
+    static final char[] dfa_48 = DFA.unpackEncodedStringToUnsignedChars(dfa_48s);
+    static final short[] dfa_49 = DFA.unpackEncodedString(dfa_49s);
+    static final short[] dfa_50 = DFA.unpackEncodedString(dfa_50s);
+    static final short[][] dfa_51 = unpackEncodedStringArray(dfa_51s);
+
+    class DFA86 extends DFA {
+
+        public DFA86(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 86;
+            this.eot = dfa_15;
+            this.eof = dfa_46;
+            this.min = dfa_47;
+            this.max = dfa_48;
+            this.accept = dfa_49;
+            this.special = dfa_50;
+            this.transition = dfa_51;
+        }
+        public String getDescription() {
+            return "()* loopback of 9261:2: ( rule__XOtherOperatorExpression__Group_1__0 )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA86_8 = input.LA(1);
+
+                         
+                        int index86_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index86_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA86_7 = input.LA(1);
+
+                         
+                        int index86_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index86_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA86_2 = input.LA(1);
+
+                         
+                        int index86_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index86_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA86_3 = input.LA(1);
+
+                         
+                        int index86_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index86_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA86_4 = input.LA(1);
+
+                         
+                        int index86_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index86_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA86_5 = input.LA(1);
+
+                         
+                        int index86_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index86_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA86_9 = input.LA(1);
+
+                         
+                        int index86_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index86_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA86_6 = input.LA(1);
+
+                         
+                        int index86_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index86_6);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 86, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_52s = "\116\uffff";
+    static final String dfa_53s = "\1\2\115\uffff";
+    static final String dfa_54s = "\1\4\1\0\114\uffff";
+    static final String dfa_55s = "\1\u008c\1\0\114\uffff";
+    static final String dfa_56s = "\2\uffff\1\2\112\uffff\1\1";
+    static final String dfa_57s = "\1\uffff\1\0\114\uffff}>";
+    static final String[] dfa_58s = {
+            "\5\2\5\uffff\2\2\2\uffff\43\2\32\uffff\2\2\22\uffff\1\2\1\uffff\1\1\31\2\11\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_52 = DFA.unpackEncodedString(dfa_52s);
+    static final short[] dfa_53 = DFA.unpackEncodedString(dfa_53s);
+    static final char[] dfa_54 = DFA.unpackEncodedStringToUnsignedChars(dfa_54s);
+    static final char[] dfa_55 = DFA.unpackEncodedStringToUnsignedChars(dfa_55s);
+    static final short[] dfa_56 = DFA.unpackEncodedString(dfa_56s);
+    static final short[] dfa_57 = DFA.unpackEncodedString(dfa_57s);
+    static final short[][] dfa_58 = unpackEncodedStringArray(dfa_58s);
+
+    class DFA93 extends DFA {
+
+        public DFA93(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 93;
+            this.eot = dfa_52;
+            this.eof = dfa_53;
+            this.min = dfa_54;
+            this.max = dfa_55;
+            this.accept = dfa_56;
+            this.special = dfa_57;
+            this.transition = dfa_58;
+        }
+        public String getDescription() {
+            return "10855:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA93_1 = input.LA(1);
+
+                         
+                        int index93_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred159_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index93_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 93, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_59s = {
+            "\5\2\5\uffff\2\2\2\uffff\43\2\32\uffff\2\2\22\uffff\1\2\1\uffff\5\2\1\1\24\2\11\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_59 = unpackEncodedStringArray(dfa_59s);
+
+    class DFA94 extends DFA {
+
+        public DFA94(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 94;
+            this.eot = dfa_52;
+            this.eof = dfa_53;
+            this.min = dfa_54;
+            this.max = dfa_55;
+            this.accept = dfa_56;
+            this.special = dfa_57;
+            this.transition = dfa_59;
+        }
+        public String getDescription() {
+            return "10881:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA94_1 = input.LA(1);
+
+                         
+                        int index94_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred160_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index94_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 94, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_60s = "\46\uffff";
+    static final String dfa_61s = "\1\4\2\0\43\uffff";
+    static final String dfa_62s = "\1\u008c\2\0\43\uffff";
+    static final String dfa_63s = "\3\uffff\1\1\1\uffff\1\2\40\uffff";
+    static final String dfa_64s = "\1\uffff\1\0\1\1\43\uffff}>";
+    static final String[] dfa_65s = {
+            "\1\1\4\5\24\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\32\uffff\1\5\25\uffff\1\2\2\uffff\3\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\14\uffff\1\3\2\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_60 = DFA.unpackEncodedString(dfa_60s);
+    static final char[] dfa_61 = DFA.unpackEncodedStringToUnsignedChars(dfa_61s);
+    static final char[] dfa_62 = DFA.unpackEncodedStringToUnsignedChars(dfa_62s);
+    static final short[] dfa_63 = DFA.unpackEncodedString(dfa_63s);
+    static final short[] dfa_64 = DFA.unpackEncodedString(dfa_64s);
+    static final short[][] dfa_65 = unpackEncodedStringArray(dfa_65s);
+
+    class DFA102 extends DFA {
+
+        public DFA102(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 102;
+            this.eot = dfa_60;
+            this.eof = dfa_60;
+            this.min = dfa_61;
+            this.max = dfa_62;
+            this.accept = dfa_63;
+            this.special = dfa_64;
+            this.transition = dfa_65;
+        }
+        public String getDescription() {
+            return "11854:2: ( rule__XClosure__Group_1__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA102_1 = input.LA(1);
+
+                         
+                        int index102_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred168_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index102_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA102_2 = input.LA(1);
+
+                         
+                        int index102_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred168_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index102_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 102, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_66s = "\42\uffff";
+    static final String dfa_67s = "\1\4\2\0\37\uffff";
+    static final String dfa_68s = "\1\u008c\2\0\37\uffff";
+    static final String dfa_69s = "\3\uffff\1\1\1\2\35\uffff";
+    static final String dfa_70s = "\1\uffff\1\0\1\1\37\uffff}>";
+    static final String[] dfa_71s = {
+            "\1\1\4\4\24\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\32\uffff\1\4\25\uffff\1\2\3\uffff\2\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\16\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_66 = DFA.unpackEncodedString(dfa_66s);
+    static final char[] dfa_67 = DFA.unpackEncodedStringToUnsignedChars(dfa_67s);
+    static final char[] dfa_68 = DFA.unpackEncodedStringToUnsignedChars(dfa_68s);
+    static final short[] dfa_69 = DFA.unpackEncodedString(dfa_69s);
+    static final short[] dfa_70 = DFA.unpackEncodedString(dfa_70s);
+    static final short[][] dfa_71 = unpackEncodedStringArray(dfa_71s);
+
+    class DFA112 extends DFA {
+
+        public DFA112(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 112;
+            this.eot = dfa_66;
+            this.eof = dfa_66;
+            this.min = dfa_67;
+            this.max = dfa_68;
+            this.accept = dfa_69;
+            this.special = dfa_70;
+            this.transition = dfa_71;
+        }
+        public String getDescription() {
+            return "13285:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA112_1 = input.LA(1);
+
+                         
+                        int index112_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred178_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index112_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA112_2 = input.LA(1);
+
+                         
+                        int index112_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred178_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index112_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 112, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA125 extends DFA {
+
+        public DFA125(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 125;
+            this.eot = dfa_52;
+            this.eof = dfa_53;
+            this.min = dfa_54;
+            this.max = dfa_55;
+            this.accept = dfa_56;
+            this.special = dfa_57;
+            this.transition = dfa_58;
+        }
+        public String getDescription() {
+            return "15418:2: ( rule__XFeatureCall__Group_3__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA125_1 = input.LA(1);
+
+                         
+                        int index125_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred191_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index125_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 125, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA126 extends DFA {
+
+        public DFA126(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 126;
+            this.eot = dfa_52;
+            this.eof = dfa_53;
+            this.min = dfa_54;
+            this.max = dfa_55;
+            this.accept = dfa_56;
+            this.special = dfa_57;
+            this.transition = dfa_59;
+        }
+        public String getDescription() {
+            return "15444:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA126_1 = input.LA(1);
+
+                         
+                        int index126_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred192_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index126_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 126, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_72s = {
+            "\5\2\5\uffff\2\2\2\uffff\13\2\1\1\27\2\32\uffff\2\2\22\uffff\1\2\1\uffff\32\2\11\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_72 = unpackEncodedStringArray(dfa_72s);
+
+    class DFA130 extends DFA {
+
+        public DFA130(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 130;
+            this.eot = dfa_52;
+            this.eof = dfa_53;
+            this.min = dfa_54;
+            this.max = dfa_55;
+            this.accept = dfa_56;
+            this.special = dfa_57;
+            this.transition = dfa_72;
+        }
+        public String getDescription() {
+            return "15904:2: ( rule__XConstructorCall__Group_3__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA130_1 = input.LA(1);
+
+                         
+                        int index130_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred196_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index130_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 130, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA131 extends DFA {
+
+        public DFA131(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 131;
+            this.eot = dfa_52;
+            this.eof = dfa_53;
+            this.min = dfa_54;
+            this.max = dfa_55;
+            this.accept = dfa_56;
+            this.special = dfa_57;
+            this.transition = dfa_58;
+        }
+        public String getDescription() {
+            return "15931:2: ( rule__XConstructorCall__Group_4__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA131_1 = input.LA(1);
+
+                         
+                        int index131_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred197_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index131_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 131, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA132 extends DFA {
+
+        public DFA132(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 132;
+            this.eot = dfa_52;
+            this.eof = dfa_53;
+            this.min = dfa_54;
+            this.max = dfa_55;
+            this.accept = dfa_56;
+            this.special = dfa_57;
+            this.transition = dfa_59;
+        }
+        public String getDescription() {
+            return "15957:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA132_1 = input.LA(1);
+
+                         
+                        int index132_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred198_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index132_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 132, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_73s = "\1\41\115\uffff";
+    static final String dfa_74s = "\1\4\40\0\55\uffff";
+    static final String dfa_75s = "\1\u008c\40\0\55\uffff";
+    static final String dfa_76s = "\41\uffff\1\2\53\uffff\1\1";
+    static final String dfa_77s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
+    static final String[] dfa_78s = {
+            "\1\1\1\27\1\23\1\24\1\25\5\uffff\2\41\2\uffff\13\41\1\15\6\41\1\10\1\7\4\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\32\uffff\1\12\1\41\22\uffff\1\41\1\uffff\1\40\3\41\1\17\1\20\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\11\uffff\2\41\1\uffff\1\41\1\22",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[] dfa_73 = DFA.unpackEncodedString(dfa_73s);
+    static final char[] dfa_74 = DFA.unpackEncodedStringToUnsignedChars(dfa_74s);
+    static final char[] dfa_75 = DFA.unpackEncodedStringToUnsignedChars(dfa_75s);
+    static final short[] dfa_76 = DFA.unpackEncodedString(dfa_76s);
+    static final short[] dfa_77 = DFA.unpackEncodedString(dfa_77s);
+    static final short[][] dfa_78 = unpackEncodedStringArray(dfa_78s);
+
+    class DFA137 extends DFA {
+
+        public DFA137(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 137;
+            this.eot = dfa_52;
+            this.eof = dfa_73;
+            this.min = dfa_74;
+            this.max = dfa_75;
+            this.accept = dfa_76;
+            this.special = dfa_77;
+            this.transition = dfa_78;
+        }
+        public String getDescription() {
+            return "16848:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA137_1 = input.LA(1);
+
+                         
+                        int index137_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA137_2 = input.LA(1);
+
+                         
+                        int index137_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA137_3 = input.LA(1);
+
+                         
+                        int index137_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA137_4 = input.LA(1);
+
+                         
+                        int index137_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA137_5 = input.LA(1);
+
+                         
+                        int index137_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA137_6 = input.LA(1);
+
+                         
+                        int index137_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA137_7 = input.LA(1);
+
+                         
+                        int index137_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA137_8 = input.LA(1);
+
+                         
+                        int index137_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA137_9 = input.LA(1);
+
+                         
+                        int index137_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA137_10 = input.LA(1);
+
+                         
+                        int index137_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA137_11 = input.LA(1);
+
+                         
+                        int index137_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA137_12 = input.LA(1);
+
+                         
+                        int index137_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA137_13 = input.LA(1);
+
+                         
+                        int index137_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA137_14 = input.LA(1);
+
+                         
+                        int index137_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA137_15 = input.LA(1);
+
+                         
+                        int index137_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA137_16 = input.LA(1);
+
+                         
+                        int index137_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA137_17 = input.LA(1);
+
+                         
+                        int index137_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA137_18 = input.LA(1);
+
+                         
+                        int index137_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA137_19 = input.LA(1);
+
+                         
+                        int index137_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA137_20 = input.LA(1);
+
+                         
+                        int index137_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA137_21 = input.LA(1);
+
+                         
+                        int index137_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA137_22 = input.LA(1);
+
+                         
+                        int index137_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA137_23 = input.LA(1);
+
+                         
+                        int index137_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA137_24 = input.LA(1);
+
+                         
+                        int index137_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA137_25 = input.LA(1);
+
+                         
+                        int index137_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA137_26 = input.LA(1);
+
+                         
+                        int index137_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA137_27 = input.LA(1);
+
+                         
+                        int index137_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA137_28 = input.LA(1);
+
+                         
+                        int index137_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA137_29 = input.LA(1);
+
+                         
+                        int index137_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA137_30 = input.LA(1);
+
+                         
+                        int index137_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA137_31 = input.LA(1);
+
+                         
+                        int index137_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA137_32 = input.LA(1);
+
+                         
+                        int index137_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index137_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 137, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_79s = "\117\uffff";
+    static final String dfa_80s = "\1\2\116\uffff";
+    static final String dfa_81s = "\1\4\1\0\115\uffff";
+    static final String dfa_82s = "\1\u008c\1\0\115\uffff";
+    static final String dfa_83s = "\2\uffff\1\2\113\uffff\1\1";
+    static final String dfa_84s = "\1\uffff\1\0\115\uffff}>";
+    static final String[] dfa_85s = {
+            "\5\2\5\uffff\2\2\2\uffff\13\2\1\1\27\2\32\uffff\2\2\22\uffff\1\2\1\uffff\32\2\1\uffff\1\2\7\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_79 = DFA.unpackEncodedString(dfa_79s);
+    static final short[] dfa_80 = DFA.unpackEncodedString(dfa_80s);
+    static final char[] dfa_81 = DFA.unpackEncodedStringToUnsignedChars(dfa_81s);
+    static final char[] dfa_82 = DFA.unpackEncodedStringToUnsignedChars(dfa_82s);
+    static final short[] dfa_83 = DFA.unpackEncodedString(dfa_83s);
+    static final short[] dfa_84 = DFA.unpackEncodedString(dfa_84s);
+    static final short[][] dfa_85 = unpackEncodedStringArray(dfa_85s);
+
+    class DFA146 extends DFA {
+
+        public DFA146(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 146;
+            this.eot = dfa_79;
+            this.eof = dfa_80;
+            this.min = dfa_81;
+            this.max = dfa_82;
+            this.accept = dfa_83;
+            this.special = dfa_84;
+            this.transition = dfa_85;
+        }
+        public String getDescription() {
+            return "18205:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA146_1 = input.LA(1);
+
+                         
+                        int index146_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalActionDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index146_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 146, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA149 extends DFA {
+
+        public DFA149(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 149;
+            this.eot = dfa_79;
+            this.eof = dfa_80;
+            this.min = dfa_81;
+            this.max = dfa_82;
+            this.accept = dfa_83;
+            this.special = dfa_84;
+            this.transition = dfa_85;
+        }
+        public String getDescription() {
+            return "18475:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA149_1 = input.LA(1);
+
+                         
+                        int index149_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred215_InternalActionDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index149_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 149, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    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[]{0x0002000000000002L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000012L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000000L,0x0000000000070000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000000L,0x000000007FC00000L,0x0000000000000006L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0xFFE0000000020000L,0x0000000000000007L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000018L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001E0L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000010000L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000C00L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000000000000L,0x0000000000003000L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000048L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0002000000000000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0001000000000010L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0004000000000010L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000004000000010L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x001F8430200001F0L,0x2FF8A67000008000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x001F8430200001F0L,0x2FF8A63000008000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x001F8430200001F0L,0x2FF8A73000008000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0007800000000010L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x00000000307C0000L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000018000000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000000008002L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000007800000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000007800002L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000038000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000038000002L,0x0000080000000000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000200000010L,0x0000002000000000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000FF0000000L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000FF0000002L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000000100000000L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000220000000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000003000000000L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000003000000002L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x000003C000000000L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x000003C000000002L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000043000000000L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000180000000000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000200000000000L,0x0000000000000000L,0x0000000000000300L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000200000000002L,0x0000000000000000L,0x0000000000000300L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000200000000000L,0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x000F800020000010L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000042000000000L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000200000010L,0x8000002000000000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000010000000L,0x0000008000000000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x001F8432200001F0L,0x2FF8A67000008000L,0x0000000000001400L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x001F8430200001F0L,0x2FF8A63000018000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x001FC432200001F0L,0x2FF8A63000008000L,0x0000000000001C00L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000200000010L,0x0000002000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x001FC430200001F2L,0x2FF8A63000008000L,0x0000000000001800L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x001F8432200001F0L,0x2FF8A63000008000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000200000010L,0x000700A000010000L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000200000012L,0x000500A000000000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000200000010L,0x000500A000000000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x001FC430200001F0L,0x2FF8A63800008000L,0x0000000000001800L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x001F8430200001F0L,0x2FF8A63800008000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x001FC430200001F0L,0x2FF8A63000008000L,0x0000000000001800L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x001FC430200001F0L,0x2FF8A63000018000L,0x0000000000001800L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000400000000000L,0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000020000000L,0x0000042000000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0010000000000000L,0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x00000000000001C0L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x00100000000001E0L,0x0180060000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000000000000000L,0x0000044000000000L});
+    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000000000000L,0x0200000000000000L});
+    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x0000000000000000L,0x5000000000000000L});
+    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+    public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
+    public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+    public static final BitSet FOLLOW_124 = new BitSet(new long[]{0x0000200000000000L});
+    public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0000200000000002L});
+    public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0000000000000180L});
+    public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x0000000200000010L,0x0000006000000000L});
+    public static final BitSet FOLLOW_128 = new BitSet(new long[]{0x0008800000000000L});
+    public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_131 = new BitSet(new long[]{0x0000004000000000L});
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.action.ide/src/org/eclipse/osbp/xtext/action/ide/ActionDSLIdeModule.java b/org.eclipse.osbp.xtext.action.ide/src/org/eclipse/osbp/xtext/action/ide/ActionDSLIdeModule.java
new file mode 100644
index 0000000..d2299af
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src/org/eclipse/osbp/xtext/action/ide/ActionDSLIdeModule.java
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.action.ide;
+
+
+/**
+ * Use this class to register ide components.
+ */
+public class ActionDSLIdeModule extends AbstractActionDSLIdeModule {
+}
diff --git a/org.eclipse.osbp.xtext.action.ide/src/org/eclipse/osbp/xtext/action/ide/ActionDSLIdeSetup.java b/org.eclipse.osbp.xtext.action.ide/src/org/eclipse/osbp/xtext/action/ide/ActionDSLIdeSetup.java
new file mode 100644
index 0000000..f1d6dd1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ide/src/org/eclipse/osbp/xtext/action/ide/ActionDSLIdeSetup.java
@@ -0,0 +1,22 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.action.ide;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.action.ActionDSLRuntimeModule;
+import org.eclipse.osbp.xtext.action.ActionDSLStandaloneSetup;
+import org.eclipse.xtext.util.Modules2;
+
+/**
+ * Initialization support for running Xtext languages as language servers.
+ */
+public class ActionDSLIdeSetup extends ActionDSLStandaloneSetup {
+
+	@Override
+	public Injector createInjector() {
+		return Guice.createInjector(Modules2.mixin(new ActionDSLRuntimeModule(), new ActionDSLIdeModule()));
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.action.tests/.classpath b/org.eclipse.osbp.xtext.action.tests/.classpath
new file mode 100644
index 0000000..0377d77
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.tests/.classpath
@@ -0,0 +1,9 @@
+<?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="src-gen/"/>
+	<classpathentry kind="src" path="xtend-gen/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.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/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.tests/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.xtext.action.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.action.tests/META-INF/MANIFEST.MF
index 699f113..afef757 100644
--- a/org.eclipse.osbp.xtext.action.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.action.tests/META-INF/MANIFEST.MF
@@ -6,12 +6,15 @@
 Bundle-SymbolicName: org.eclipse.osbp.xtext.action.tests;singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.xtext.junit4,
+ org.eclipse.xtext.junit4;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.ui.workbench;resolution:=optional,
  org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
  com.google.inject;bundle-version="3.0.0",
  org.eclipse.osbp.xtext.action;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.action.ui;bundle-version="[0.9.0,0.10.0)"
+ org.eclipse.osbp.xtext.action.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtext.testing,
+ org.eclipse.xtext.xbase.testing
 Import-Package: org.eclipse.osbp.xtext.action;version="0.9.0",
  org.apache.log4j,
  org.hamcrest.core,
@@ -22,4 +25,4 @@
  org.junit.runners;version="4.5.0",
  org.junit.runners.model;version="4.5.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.osbp.xtext.action;version="0.9.0"
+Export-Package: org.eclipse.osbp.xtext.action.tests;version="0.9.0";x-internal=true
diff --git a/org.eclipse.osbp.xtext.action.tests/src-gen/org/eclipse/osbp/xtext/action/tests/ActionDSLInjectorProvider.java b/org.eclipse.osbp.xtext.action.tests/src-gen/org/eclipse/osbp/xtext/action/tests/ActionDSLInjectorProvider.java
new file mode 100644
index 0000000..8161d32
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.tests/src-gen/org/eclipse/osbp/xtext/action/tests/ActionDSLInjectorProvider.java
@@ -0,0 +1,79 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+package org.eclipse.osbp.xtext.action.tests;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.action.ActionDSLRuntimeModule;
+import org.eclipse.osbp.xtext.action.ActionDSLStandaloneSetup;
+import org.eclipse.xtext.testing.GlobalRegistries;
+import org.eclipse.xtext.testing.GlobalRegistries.GlobalStateMemento;
+import org.eclipse.xtext.testing.IInjectorProvider;
+import org.eclipse.xtext.testing.IRegistryConfigurator;
+
+public class ActionDSLInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
+
+	protected GlobalStateMemento stateBeforeInjectorCreation;
+	protected GlobalStateMemento stateAfterInjectorCreation;
+	protected Injector injector;
+
+	static {
+		GlobalRegistries.initializeDefaults();
+	}
+
+	@Override
+	public Injector getInjector() {
+		if (injector == null) {
+			stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+			this.injector = internalCreateInjector();
+			stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+		}
+		return injector;
+	}
+
+	protected Injector internalCreateInjector() {
+		return new ActionDSLStandaloneSetup() {
+			@Override
+			public Injector createInjector() {
+				return Guice.createInjector(createRuntimeModule());
+			}
+		}.createInjectorAndDoEMFRegistration();
+	}
+
+	protected ActionDSLRuntimeModule createRuntimeModule() {
+		// make it work also with Maven/Tycho and OSGI
+		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=493672
+		return new ActionDSLRuntimeModule() {
+			@Override
+			public ClassLoader bindClassLoaderToInstance() {
+				return ActionDSLInjectorProvider.class
+						.getClassLoader();
+			}
+		};
+	}
+
+	@Override
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	@Override
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.action.tests/src/org/eclipse/osbp/xtext/action/tests/ActionDSLParsingTest.xtend b/org.eclipse.osbp.xtext.action.tests/src/org/eclipse/osbp/xtext/action/tests/ActionDSLParsingTest.xtend
new file mode 100644
index 0000000..84e4784
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.tests/src/org/eclipse/osbp/xtext/action/tests/ActionDSLParsingTest.xtend
@@ -0,0 +1,29 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.action.tests
+
+import com.google.inject.Inject
+import org.eclipse.osbp.xtext.action.ActionModel
+import org.eclipse.xtext.testing.InjectWith
+import org.eclipse.xtext.testing.XtextRunner
+import org.eclipse.xtext.testing.util.ParseHelper
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(XtextRunner)
+@InjectWith(ActionDSLInjectorProvider)
+class ActionDSLParsingTest {
+	@Inject
+	ParseHelper<ActionModel> parseHelper
+	
+	@Test
+	def void loadModel() {
+		val result = parseHelper.parse('''
+			Hello Xtext!
+		''')
+		Assert.assertNotNull(result)
+		Assert.assertTrue(result.eResource.errors.isEmpty)
+	}
+}
diff --git a/org.eclipse.osbp.xtext.action.tests/xtend-gen/org/eclipse/osbp/xtext/action/tests/ActionDSLParsingTest.java b/org.eclipse.osbp.xtext.action.tests/xtend-gen/org/eclipse/osbp/xtext/action/tests/ActionDSLParsingTest.java
new file mode 100644
index 0000000..0179b77
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.tests/xtend-gen/org/eclipse/osbp/xtext/action/tests/ActionDSLParsingTest.java
@@ -0,0 +1,43 @@
+/**
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.action.tests;
+
+import com.google.inject.Inject;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.xtext.action.ActionModel;
+import org.eclipse.osbp.xtext.action.tests.ActionDSLInjectorProvider;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.testing.InjectWith;
+import org.eclipse.xtext.testing.XtextRunner;
+import org.eclipse.xtext.testing.util.ParseHelper;
+import org.eclipse.xtext.xbase.lib.Exceptions;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(XtextRunner.class)
+@InjectWith(ActionDSLInjectorProvider.class)
+@SuppressWarnings("all")
+public class ActionDSLParsingTest {
+  @Inject
+  private ParseHelper<ActionModel> parseHelper;
+  
+  @Test
+  public void loadModel() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("Hello Xtext!");
+      _builder.newLine();
+      final ActionModel result = this.parseHelper.parse(_builder);
+      Assert.assertNotNull(result);
+      Resource _eResource = result.eResource();
+      EList<Resource.Diagnostic> _errors = _eResource.getErrors();
+      boolean _isEmpty = _errors.isEmpty();
+      Assert.assertTrue(_isEmpty);
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.xtext.action.ui/.classpath b/org.eclipse.osbp.xtext.action.ui/.classpath
new file mode 100644
index 0000000..0377d77
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/.classpath
@@ -0,0 +1,9 @@
+<?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="src-gen/"/>
+	<classpathentry kind="src" path="xtend-gen/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/.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/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,11 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.xtext.action.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.action.ui/META-INF/MANIFEST.MF
index 12b9ef4..afc3163 100644
--- a/org.eclipse.osbp.xtext.action.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.action.ui/META-INF/MANIFEST.MF
@@ -6,29 +6,31 @@
 Bundle-SymbolicName: org.eclipse.osbp.xtext.action.ui;singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
- javax.annotation;bundle-version="[1.1.0,1.2.0)",
  com.google.inject;bundle-version="3.0.0",
- org.eclipse.xtext.ui,
+ org.eclipse.xtext.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.ui.editors;bundle-version="3.5.0",
- org.eclipse.xtext.ui.shared,
- org.eclipse.xtext.xbase.ui,
+ org.eclipse.xtext.ui.shared;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.ui,
- org.eclipse.xtext.builder,
- org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtext.builder;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
  org.antlr.runtime,
- org.eclipse.xtext.common.types.ui,
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.jdt.debug.ui,
- org.eclipse.xtext.ui.codetemplates.ui,
+ org.eclipse.xtext.ui.codetemplates.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.compare,
  org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.action;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.action.ide;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.basic.ui;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.fork.mihalis.opal.imageSelector.osgi;bundle-version="[0.9.0,0.10.0)"
-Import-Package: org.apache.log4j
+ org.eclipse.osbp.fork.mihalis.opal.imageSelector.osgi;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.oxtype;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.oxtype.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtend.lib;resolution:=optional
+Import-Package: org.apache.log4j,
+ javax.annotation
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.xtext.action.ui.contentassist;version="0.9.0",
- org.eclipse.osbp.xtext.action.ui.contentassist.antlr;version="0.9.0",
  org.eclipse.osbp.xtext.action.ui.internal;version="0.9.0",
  org.eclipse.osbp.xtext.action.ui.quickfix;version="0.9.0"
-Bundle-Activator: org.eclipse.osbp.xtext.action.ui.internal.ActionDSLActivator
+Bundle-Activator: org.eclipse.osbp.xtext.action.ui.internal.ActionActivator
diff --git a/org.eclipse.osbp.xtext.action.ui/plugin.xml b/org.eclipse.osbp.xtext.action.ui/plugin.xml
index db88ee9..8805c3b 100644
--- a/org.eclipse.osbp.xtext.action.ui/plugin.xml
+++ b/org.eclipse.osbp.xtext.action.ui/plugin.xml
@@ -566,4 +566,34 @@
     </provider>
   </extension>
 
+    <!-- Organize imports  -->
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.osbp.xtext.oxtype.ui.imports.OXTypeOrganizeImportsHandler"
+            commandId="org.eclipse.xtext.xbase.ui.organizeImports">
+               <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>
+
+ <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="menu:#xtext.ui.SourceMenu?after=xtext.ui.ImportsSeparator">
+             <command
+                 commandId="org.eclipse.xtext.xbase.ui.organizeImports"
+                 style="push"
+                 tooltip="Organize Imports">
+                <visibleWhen checkEnabled="false">
+                    <reference
+                        definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+                    </reference>
+                </visibleWhen>
+            </command>  
+        </menuContribution>
+    </extension>
+
 </plugin>
diff --git a/org.eclipse.osbp.xtext.action.ui/plugin.xml_gen b/org.eclipse.osbp.xtext.action.ui/plugin.xml_gen
index 01fa408..eb77664 100644
--- a/org.eclipse.osbp.xtext.action.ui/plugin.xml_gen
+++ b/org.eclipse.osbp.xtext.action.ui/plugin.xml_gen
@@ -1,215 +1,211 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.0"?>
-
 <plugin>
-
-    <extension
-            point="org.eclipse.ui.editors">
-        <editor
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
-            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
-            default="true"
-            extensions="action"
-            id="org.eclipse.osbp.xtext.action.ActionDSL"
-            matchingStrategy="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
-            name="ActionDSL Editor">
-        </editor>
-    </extension>
-    <extension
-        point="org.eclipse.ui.handlers">
-        <handler
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
-            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
-            <activeWhen>
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
-            commandId="org.eclipse.osbp.xtext.action.ActionDSL.validate">
-         <activeWhen>
-            <reference
-                    definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
-            </reference>
-         </activeWhen>
-      	</handler>
-      	<!-- copy qualified name -->
-        <handler
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
-            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
-            <activeWhen>
+	<extension
+		point="org.eclipse.ui.editors">
+		<editor
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+			contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+			default="true"
+			extensions="action"
+			id="org.eclipse.osbp.xtext.action.ActionDSL"
+			matchingStrategy="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+			name="ActionDSL Editor">
+		</editor>
+	</extension>
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+			commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+			commandId="org.eclipse.osbp.xtext.action.ActionDSL.validate">
+		<activeWhen>
+			<reference
+					definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+			</reference>
+		</activeWhen>
+		</handler>
+		<!-- copy qualified name -->
+		<handler
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+			<activeWhen>
 				<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened" />
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
-            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
-            <activeWhen>
-            	<and>
-            		<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.XtextEditor.opened" />
-	                <iterate>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+			<activeWhen>
+				<and>
+					<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.XtextEditor.opened" />
+					<iterate>
 						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
 					</iterate>
 				</and>
-            </activeWhen>
-        </handler>
-    </extension>
-    <extension point="org.eclipse.core.expressions.definitions">
-        <definition id="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
-            <and>
-                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.eclipse.osbp.xtext.action.ActionDSL" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-        <definition id="org.eclipse.osbp.xtext.action.ActionDSL.XtextEditor.opened">
-            <and>
-                <reference definitionId="isXtextEditorActive"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.eclipse.osbp.xtext.action.ActionDSL" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-    </extension>
-    <extension
-            point="org.eclipse.ui.preferencePages">
-        <page
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.eclipse.osbp.xtext.action.ActionDSL"
-            name="ActionDSL">
-            <keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
-        </page>
-        <page
-            category="org.eclipse.osbp.xtext.action.ActionDSL"
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
-            id="org.eclipse.osbp.xtext.action.ActionDSL.coloring"
-            name="Syntax Coloring">
-            <keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
-        </page>
-        <page
-            category="org.eclipse.osbp.xtext.action.ActionDSL"
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
-            id="org.eclipse.osbp.xtext.action.ActionDSL.templates"
-            name="Templates">
-            <keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
-        </page>
-    </extension>
-    <extension
-            point="org.eclipse.ui.propertyPages">
-        <page
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.eclipse.osbp.xtext.action.ActionDSL"
-            name="ActionDSL">
-            <keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
-            <enabledWhen>
-	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+			<and>
+				<reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.osbp.xtext.action.ActionDSL"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+		<definition id="org.eclipse.osbp.xtext.action.ActionDSL.XtextEditor.opened">
+			<and>
+				<reference definitionId="isXtextEditorActive"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.osbp.xtext.action.ActionDSL"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+	</extension>
+	<extension
+			point="org.eclipse.ui.preferencePages">
+		<page
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.osbp.xtext.action.ActionDSL"
+			name="ActionDSL">
+			<keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
+		</page>
+		<page
+			category="org.eclipse.osbp.xtext.action.ActionDSL"
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+			id="org.eclipse.osbp.xtext.action.ActionDSL.coloring"
+			name="Syntax Coloring">
+			<keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
+		</page>
+		<page
+			category="org.eclipse.osbp.xtext.action.ActionDSL"
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+			id="org.eclipse.osbp.xtext.action.ActionDSL.templates"
+			name="Templates">
+			<keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
+		</page>
+	</extension>
+	<extension
+			point="org.eclipse.ui.propertyPages">
+		<page
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.osbp.xtext.action.ActionDSL"
+			name="ActionDSL">
+			<keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
+			<enabledWhen>
+				<adapt type="org.eclipse.core.resources.IProject"/>
 			</enabledWhen>
-	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
-        </page>
-    </extension>
-    <extension
-        point="org.eclipse.ui.keywords">
-        <keyword
-            id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"
-            label="ActionDSL"/>
-    </extension>
-    <extension
-         point="org.eclipse.ui.commands">
-      <command
-            description="Trigger expensive validation"
-            id="org.eclipse.osbp.xtext.action.ActionDSL.validate"
-            name="Validate">
-      </command>
-      <!-- copy qualified name -->
-      <command
-            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
-            categoryId="org.eclipse.ui.category.edit"
-            description="Copy the qualified name for the selected element"
-            name="Copy Qualified Name">
-      </command>
-      <command
-            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
-            categoryId="org.eclipse.ui.category.edit"
-            description="Copy the qualified name for the selected element"
-            name="Copy Qualified Name">
-      </command>
-    </extension>
-    <extension point="org.eclipse.ui.menus">
-        <menuContribution
-            locationURI="popup:#TextEditorContext?after=group.edit">
-             <command
-                 commandId="org.eclipse.osbp.xtext.action.ActionDSL.validate"
-                 style="push"
-                 tooltip="Trigger expensive validation">
-            <visibleWhen checkEnabled="false">
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
-                </reference>
-            </visibleWhen>
-         </command>  
-         </menuContribution>
-         <!-- copy qualified name -->
-         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
-         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
-         		style="push" tooltip="Copy Qualified Name">
-            	<visibleWhen checkEnabled="false">
-                	<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened" />
-            	</visibleWhen>
-         	</command>  
-         </menuContribution>
-         <menuContribution locationURI="menu:edit?after=copy">
-         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
-            	style="push" tooltip="Copy Qualified Name">
-            	<visibleWhen checkEnabled="false">
-                	<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened" />
-            	</visibleWhen>
-         	</command>  
-         </menuContribution>
-         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
-			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+			<filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+		</page>
+	</extension>
+	<extension
+		point="org.eclipse.ui.keywords">
+		<keyword
+			id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"
+			label="ActionDSL"/>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+	<command
+			description="Trigger expensive validation"
+			id="org.eclipse.osbp.xtext.action.ActionDSL.validate"
+			name="Validate">
+	</command>
+	<!-- copy qualified name -->
+	<command
+			id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+			categoryId="org.eclipse.ui.category.edit"
+			description="Copy the qualified name for the selected element"
+			name="Copy Qualified Name">
+	</command>
+	<command
+			id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+			categoryId="org.eclipse.ui.category.edit"
+			description="Copy the qualified name for the selected element"
+			name="Copy Qualified Name">
+	</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.edit">
+			 <command
+				 commandId="org.eclipse.osbp.xtext.action.ActionDSL.validate"
+				 style="push"
+				 tooltip="Trigger expensive validation">
+			<visibleWhen checkEnabled="false">
+				<reference
+					definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+				</reference>
+			</visibleWhen>
+		</command>
+		</menuContribution>
+		<!-- copy qualified name -->
+		<menuContribution locationURI="popup:#TextEditorContext?after=copy">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
 				style="push" tooltip="Copy Qualified Name">
-         		<visibleWhen checkEnabled="false">
-	            	<and>
-	            		<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.XtextEditor.opened" />
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened" />
+				</visibleWhen>
+			</command>
+		</menuContribution>
+		<menuContribution locationURI="menu:edit?after=copy">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+				style="push" tooltip="Copy Qualified Name">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened" />
+				</visibleWhen>
+			</command>
+		</menuContribution>
+		<menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+				style="push" tooltip="Copy Qualified Name">
+				<visibleWhen checkEnabled="false">
+					<and>
+						<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.XtextEditor.opened" />
 						<iterate>
 							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
 						</iterate>
 					</and>
 				</visibleWhen>
 			</command>
-         </menuContribution>
-    </extension>
-    <extension point="org.eclipse.ui.menus">
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
 		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
 			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
 				<visibleWhen checkEnabled="false">
-                	<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
-                	</reference>
-            	</visibleWhen>
+					<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
 			</command>
 		</menuContribution>
 	</extension>
 	<extension point="org.eclipse.ui.handlers">
-	    <handler
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
-            commandId="org.eclipse.xtext.ui.editor.FindReferences">
-            <activeWhen>
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-    </extension>   
-
-<!-- adding resource factories -->
-
+		<handler
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+			commandId="org.eclipse.xtext.ui.editor.FindReferences">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<!-- adding resource factories -->
 	<extension
 		point="org.eclipse.emf.ecore.extension_parser">
 		<parser
@@ -218,69 +214,81 @@
 		</parser>
 	</extension>
 	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
-        <resourceServiceProvider
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
-            uriExtension="action">
-        </resourceServiceProvider>
-    </extension>
-
-
+		<resourceServiceProvider
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+			uriExtension="action">
+		</resourceServiceProvider>
+	</extension>
 	<!-- marker definitions for org.eclipse.osbp.xtext.action.ActionDSL -->
 	<extension
-	        id="actiondsl.check.fast"
-	        name="ActionDSL Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.fast"/>
-	    <persistent value="true"/>
+			id="actiondsl.check.fast"
+			name="ActionDSL Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.fast"/>
+		<persistent value="true"/>
 	</extension>
 	<extension
-	        id="actiondsl.check.normal"
-	        name="ActionDSL Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.normal"/>
-	    <persistent value="true"/>
+			id="actiondsl.check.normal"
+			name="ActionDSL Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.normal"/>
+		<persistent value="true"/>
 	</extension>
 	<extension
-	        id="actiondsl.check.expensive"
-	        name="ActionDSL Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.expensive"/>
-	    <persistent value="true"/>
+			id="actiondsl.check.expensive"
+			name="ActionDSL Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.expensive"/>
+		<persistent value="true"/>
 	</extension>
-
-   <extension
-         point="org.eclipse.xtext.builder.participant">
-      <participant
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
-            fileExtensions="action"
-            >
-      </participant>
-   </extension>
-   <extension
-            point="org.eclipse.ui.preferencePages">
-        <page
-            category="org.eclipse.osbp.xtext.action.ActionDSL"
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
-            id="org.eclipse.osbp.xtext.action.ActionDSL.compiler.preferencePage"
-            name="Compiler">
-            <keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
-        </page>
-    </extension>
-    <extension
-            point="org.eclipse.ui.propertyPages">
-        <page
-            category="org.eclipse.osbp.xtext.action.ActionDSL"
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
-            id="org.eclipse.osbp.xtext.action.ActionDSL.compiler.propertyPage"
-            name="Compiler">
-            <keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
-            <enabledWhen>
-	            <adapt type="org.eclipse.core.resources.IProject"/>
+	<extension point="org.eclipse.xtext.builder.participant">
+		<participant
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+			fileExtensions="action"/>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.osbp.xtext.action.ActionDSL"
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.osbp.xtext.action.ActionDSL.compiler.preferencePage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.ui.propertyPages">
+		<page
+			category="org.eclipse.osbp.xtext.action.ActionDSL"
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.osbp.xtext.action.ActionDSL.compiler.propertyPage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
+			<enabledWhen>
+				<adapt type="org.eclipse.core.resources.IProject"/>
 			</enabledWhen>
-	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
-        </page>
-    </extension>
-
+			<filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?after=xtext.ui.openDeclaration">
+			<command
+				commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand"
+				id="org.eclipse.osbp.xtext.action.ActionDSL.OpenGeneratedCode"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened" />
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+			<activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened" />
+			</activeWhen>
+		</handler>
+	</extension>
 	<!-- Quick Outline -->
 	<extension
 		point="org.eclipse.ui.handlers">
@@ -314,35 +322,35 @@
 			</command>
 		</menuContribution>
 	</extension>
-    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.action.ActionDSL -->
-    <extension
-            point="org.eclipse.ui.ide.markerResolution">
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.action.ui.actiondsl.check.fast">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.action.ui.actiondsl.check.normal">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.action.ui.actiondsl.check.expensive">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-    </extension>
-   	<!-- Rename Refactoring -->
+	<!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.action.ActionDSL -->
+	<extension
+			point="org.eclipse.ui.ide.markerResolution">
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.action.ui.actiondsl.check.fast">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.action.ui.actiondsl.check.normal">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.action.ui.actiondsl.check.expensive">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+	</extension>
+	<!-- Rename Refactoring -->
 	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
@@ -354,32 +362,30 @@
 			</activeWhen>
 		</handler>
 	</extension>
-    <extension point="org.eclipse.ui.menus">
-         <menuContribution
-            locationURI="popup:#TextEditorContext?after=group.edit">
-         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
-               style="push">
-            <visibleWhen checkEnabled="false">
-               <reference
-                     definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
-               </reference>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-   <extension point="org.eclipse.ui.preferencePages">
-	    <page
-	        category="org.eclipse.osbp.xtext.action.ActionDSL"
-	        class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
-	        id="org.eclipse.osbp.xtext.action.ActionDSL.refactoring"
-	        name="Refactoring">
-	        <keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
-	    </page>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.edit">
+			<command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference
+						definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
 	</extension>
-
-<!-- Type Hierarchy  -->
-	<extension
-		point="org.eclipse.ui.handlers">
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.osbp.xtext.action.ActionDSL"
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+			id="org.eclipse.osbp.xtext.action.ActionDSL.refactoring"
+			name="Refactoring">
+			<keywordReference id="org.eclipse.osbp.xtext.action.ui.keyword_ActionDSL"/>
+		</page>
+	</extension>
+	<!-- Type Hierarchy  -->
+	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
 			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
@@ -398,9 +404,31 @@
 				</reference>
 			</activeWhen>
 		</handler>
+		<handler
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.imports.OrganizeImportsHandler"
+			commandId="org.eclipse.xtext.xbase.ui.organizeImports">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
 	</extension>
 	<extension point="org.eclipse.ui.menus">
 		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.edit">
+			 <command
+				 commandId="org.eclipse.xtext.xbase.ui.organizeImports"
+				 style="push"
+				 tooltip="Organize Imports">
+				<visibleWhen checkEnabled="false">
+					<reference
+						definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+		<menuContribution
 			locationURI="popup:#TextEditorContext?after=group.open">
 			<command commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy"
 				style="push"
@@ -422,8 +450,7 @@
 		</menuContribution>
 	</extension>
 	<!-- Call Hierachy -->
-	<extension
-		point="org.eclipse.ui.handlers">
+	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
 			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
@@ -434,7 +461,6 @@
 			</activeWhen>
 		</handler>
 	</extension>
-	
 	<extension point="org.eclipse.ui.menus">
 		<menuContribution
 			locationURI="popup:#TextEditorContext?after=group.open">
@@ -447,50 +473,49 @@
 			</command>
 		</menuContribution>
 	</extension>
-	<extension
-         point="org.eclipse.core.runtime.adapters">
-      <factory class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.builder.smap.StratumBreakpointAdapterFactory"
-         adaptableType="org.eclipse.xtext.ui.editor.XtextEditor">
-         <adapter type="org.eclipse.debug.ui.actions.IToggleBreakpointsTarget"/>
-      </factory> 
-   </extension>
-   <extension point="org.eclipse.ui.editorActions">
-      <editorContribution targetID="org.eclipse.osbp.xtext.action.ActionDSL" 
-                          id="org.eclipse.osbp.xtext.action.ActionDSL.rulerActions">
-	     <action
-	             label="Not Used"
-	             class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-	             style="push"
-	             actionID="RulerDoubleClick"
-	             id="org.eclipse.osbp.xtext.action.ActionDSL.doubleClickBreakpointAction"/>
-	  </editorContribution>
-   </extension>
-   <extension point="org.eclipse.ui.popupMenus">
-      <viewerContribution
-         targetID="org.eclipse.osbp.xtext.action.ActionDSL.RulerContext"
-         id="org.eclipse.osbp.xtext.action.ActionDSL.RulerPopupActions">
-         <action
-            label="Toggle Breakpoint"
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-            menubarPath="debug"
-            id="org.eclipse.osbp.xtext.action.ActionDSL.rulerContextMenu.toggleBreakpointAction">
-         </action>
-         <action
-            label="Not used"
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
-            menubarPath="debug"
-            id="org.eclipse.osbp.xtext.action.ActionDSL.rulerContextMenu.enableDisableBreakpointAction">
-         </action>
-         <action
-           label="Breakpoint Properties"
-           helpContextId="breakpoint_properties_action_context"
-           class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
-           menubarPath="group.properties"
-           id="org.eclipse.osbp.xtext.action.ActionDSL.rulerContextMenu.openBreapointPropertiesAction">
-         </action>
-      </viewerContribution>
-   </extension>
-    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.core.runtime.adapters">
+		<factory class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.builder.smap.StratumBreakpointAdapterFactory"
+			adaptableType="org.eclipse.xtext.ui.editor.XtextEditor">
+			<adapter type="org.eclipse.debug.ui.actions.IToggleBreakpointsTarget"/>
+		</factory> 
+	</extension>
+	<extension point="org.eclipse.ui.editorActions">
+		<editorContribution targetID="org.eclipse.osbp.xtext.action.ActionDSL" 
+			id="org.eclipse.osbp.xtext.action.ActionDSL.rulerActions">
+			<action
+				label="Not Used"
+	 			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+				style="push"
+				actionID="RulerDoubleClick"
+				id="org.eclipse.osbp.xtext.action.ActionDSL.doubleClickBreakpointAction"/>
+		</editorContribution>
+	</extension>
+	<extension point="org.eclipse.ui.popupMenus">
+		<viewerContribution
+			targetID="org.eclipse.osbp.xtext.action.ActionDSL.RulerContext"
+			id="org.eclipse.osbp.xtext.action.ActionDSL.RulerPopupActions">
+			<action
+				label="Toggle Breakpoint"
+				class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+				menubarPath="debug"
+				id="org.eclipse.osbp.xtext.action.ActionDSL.rulerContextMenu.toggleBreakpointAction">
+			</action>
+			<action
+				label="Not used"
+				class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
+				menubarPath="debug"
+				id="org.eclipse.osbp.xtext.action.ActionDSL.rulerContextMenu.enableDisableBreakpointAction">
+			</action>
+			<action
+				label="Breakpoint Properties"
+				helpContextId="breakpoint_properties_action_context"
+				class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
+				menubarPath="group.properties"
+				id="org.eclipse.osbp.xtext.action.ActionDSL.rulerContextMenu.openBreapointPropertiesAction">
+			</action>
+		</viewerContribution>
+	</extension>
+	<!-- Introduce Local Variable Refactoring -->
 	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
@@ -502,61 +527,65 @@
 			</activeWhen>
 		</handler>
 	</extension>
-    <extension point="org.eclipse.ui.menus">
-         <menuContribution
-            locationURI="popup:#TextEditorContext?after=group.edit">
-         <command commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable"
-               style="push">
-            <visibleWhen checkEnabled="false">
-               <reference
-                     definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
-               </reference>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>  
-   <!-- Open implementation -->
-   <extension point="org.eclipse.ui.handlers">
-      <handler
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
-            commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
-            <activeWhen>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.edit">
+			<command commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference
+						definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Open implementation -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
+			commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+			<activeWhen>
 				<reference
 					definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
 				</reference>
 			</activeWhen>
-      </handler>
-   </extension>
- <extension point="org.eclipse.ui.menus">
-       <menuContribution
-            locationURI="menu:navigate?after=open.ext4">
-         <command commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
-		<visibleWhen checkEnabled="false">
-              <reference
-                 definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
-              </reference>
-		</visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-
-  <extension point="org.eclipse.compare.contentViewers">
-    <viewer id="org.eclipse.osbp.xtext.action.ActionDSL.compare.contentViewers"
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
-            extensions="action">
-    </viewer>
-  </extension>
-  <extension point="org.eclipse.compare.contentMergeViewers">
-    <viewer id="org.eclipse.osbp.xtext.action.ActionDSL.compare.contentMergeViewers"
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
-            extensions="action" label="ActionDSL Compare">
-     </viewer>
-  </extension>
-  <extension point="org.eclipse.ui.editors.documentProviders">
-    <provider id="org.eclipse.osbp.xtext.action.ActionDSL.editors.documentProviders"
-            class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
-            extensions="action">
-    </provider>
-  </extension>
-
+		</handler>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="menu:navigate?after=open.ext4">
+			<command commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+				<visibleWhen checkEnabled="false">
+					<reference
+						definitionId="org.eclipse.osbp.xtext.action.ActionDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.compare.contentViewers">
+		<viewer id="org.eclipse.osbp.xtext.action.ActionDSL.compare.contentViewers"
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="action">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.compare.contentMergeViewers">
+		<viewer id="org.eclipse.osbp.xtext.action.ActionDSL.compare.contentMergeViewers"
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="action" label="ActionDSL Compare">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.ui.editors.documentProviders">
+		<provider id="org.eclipse.osbp.xtext.action.ActionDSL.editors.documentProviders"
+			class="org.eclipse.osbp.xtext.action.ui.ActionDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+			extensions="action">
+		</provider>
+	</extension>
+	<extension point="org.eclipse.team.core.fileTypes">
+		<fileTypes
+			extension="action"
+			type="text">
+		</fileTypes>
+	</extension>
 </plugin>
diff --git a/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/AbstractActionDSLUiModule.java b/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/AbstractActionDSLUiModule.java
index 080f02f..7a50d13 100644
--- a/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/AbstractActionDSLUiModule.java
+++ b/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/AbstractActionDSLUiModule.java
@@ -10,365 +10,399 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action.ui;
 
-import org.eclipse.xtext.ui.DefaultUiModule;
+import com.google.inject.Binder;
+import com.google.inject.Provider;
+import com.google.inject.name.Names;
+import org.eclipse.compare.IViewerCreator;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.osbp.xtext.action.ide.contentassist.antlr.ActionDSLParser;
+import org.eclipse.osbp.xtext.action.ide.contentassist.antlr.PartialActionDSLContentAssistParser;
+import org.eclipse.osbp.xtext.action.ide.contentassist.antlr.internal.InternalActionDSLLexer;
+import org.eclipse.osbp.xtext.action.ui.contentassist.ActionDSLProposalProvider;
+import org.eclipse.osbp.xtext.action.ui.labeling.ActionDSLDescriptionLabelProvider;
+import org.eclipse.osbp.xtext.action.ui.labeling.ActionDSLLabelProvider;
+import org.eclipse.osbp.xtext.action.ui.outline.ActionDSLOutlineTreeProvider;
+import org.eclipse.osbp.xtext.action.ui.quickfix.ActionDSLQuickfixProvider;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.builder.BuilderParticipant;
+import org.eclipse.xtext.builder.EclipseOutputConfigurationProvider;
+import org.eclipse.xtext.builder.IXtextBuilderParticipant;
+import org.eclipse.xtext.builder.builderState.IBuilderState;
+import org.eclipse.xtext.builder.clustering.CurrentDescriptions;
+import org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource;
+import org.eclipse.xtext.builder.nature.NatureAddingEditorCallback;
+import org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess;
+import org.eclipse.xtext.common.types.ui.navigation.GlobalDerivedMemberAwareURIEditorOpener;
+import org.eclipse.xtext.common.types.ui.navigation.IDerivedMemberAwareEditorOpener;
+import org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation;
+import org.eclipse.xtext.common.types.ui.refactoring.JdtRenameSupport;
+import org.eclipse.xtext.common.types.ui.refactoring.participant.JdtRenameParticipant;
+import org.eclipse.xtext.common.types.ui.refactoring.participant.JvmMemberRenameStrategy;
+import org.eclipse.xtext.common.types.xtext.ui.ITypesProposalProvider;
+import org.eclipse.xtext.generator.IContextualOutputConfigurationProvider;
+import org.eclipse.xtext.ide.LexerIdeBindings;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
+import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser;
+import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider;
+import org.eclipse.xtext.parser.antlr.ITokenDefProvider;
+import org.eclipse.xtext.parser.antlr.LexerProvider;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.containers.IAllContainersState;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
+import org.eclipse.xtext.service.SingletonBinding;
+import org.eclipse.xtext.ui.LanguageSpecific;
+import org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialEditingContentAssistContextFactory;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.PartialEditingContentAssistContextFactory;
+import org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage;
+import org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration;
+import org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar;
+import org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry;
+import org.eclipse.xtext.ui.compare.DefaultViewerCreator;
+import org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource;
+import org.eclipse.xtext.ui.editor.GlobalURIEditorOpener;
+import org.eclipse.xtext.ui.editor.IURIEditorOpener;
+import org.eclipse.xtext.ui.editor.IXtextEditorCallback;
+import org.eclipse.xtext.ui.editor.XtextEditor;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher;
+import org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper;
+import org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.DelegatingContentAssistContextFactory;
+import org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler;
+import org.eclipse.xtext.ui.editor.findrefs.ReferenceQueryExecutor;
+import org.eclipse.xtext.ui.editor.model.XtextDocumentProvider;
+import org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider;
+import org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider;
+import org.eclipse.xtext.ui.editor.outline.impl.OutlineNodeElementOpener;
+import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer;
+import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider;
+import org.eclipse.xtext.ui.editor.templates.XtextTemplateContextType;
+import org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage;
+import org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler;
+import org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator;
+import org.eclipse.xtext.ui.refactoring.IReferenceUpdater;
+import org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider;
+import org.eclipse.xtext.ui.refactoring.IRenameStrategy;
+import org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategyProvider;
+import org.eclipse.xtext.ui.refactoring.ui.IRenameContextFactory;
+import org.eclipse.xtext.ui.refactoring.ui.IRenameSupport;
+import org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences;
+import org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider;
+import org.eclipse.xtext.ui.shared.Access;
+import org.eclipse.xtext.xbase.annotations.ui.DefaultXbaseWithAnnotationsUiModule;
+import org.eclipse.xtext.xbase.imports.IUnresolvedTypeResolver;
+import org.eclipse.xtext.xbase.ui.contentassist.ImportingTypesProposalProvider;
+import org.eclipse.xtext.xbase.ui.editor.XbaseDocumentProvider;
+import org.eclipse.xtext.xbase.ui.editor.XbaseEditor;
+import org.eclipse.xtext.xbase.ui.generator.trace.XbaseOpenGeneratedFileHandler;
+import org.eclipse.xtext.xbase.ui.imports.InteractiveUnresolvedTypeResolver;
+import org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelFindReferenceHandler;
+import org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelReferenceQueryExecutor;
+import org.eclipse.xtext.xbase.ui.jvmmodel.navigation.DerivedMemberAwareEditorOpener;
+import org.eclipse.xtext.xbase.ui.jvmmodel.outline.JvmOutlineNodeElementOpener;
+import org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.DefaultJvmModelRenameStrategy;
+import org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelDependentElementsCalculator;
+import org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelJdtRenameParticipantContext;
+import org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameContextFactory;
+import org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameRefactoringProvider;
+import org.eclipse.xtext.xbase.ui.refactoring.XbaseReferenceUpdater;
+import org.eclipse.xtext.xbase.ui.templates.XbaseTemplateContextType;
 
 /**
- * Manual modifications go to {org.eclipse.osbp.xtext.action.ui.ActionDSLUiModule}
+ * Manual modifications go to {@link ActionDSLUiModule}.
  */
 @SuppressWarnings("all")
-public abstract class AbstractActionDSLUiModule extends DefaultUiModule {
-	
+public abstract class AbstractActionDSLUiModule extends DefaultXbaseWithAnnotationsUiModule {
+
 	public AbstractActionDSLUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
 	}
 	
+	// contributed by org.eclipse.xtext.xtext.generator.ImplicitFragment
+	public Provider<? extends IAllContainersState> provideIAllContainersState() {
+		return Access.getJavaProjectsState();
+	}
 	
-	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
-	public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
-		return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+	// contributed by org.eclipse.xtext.xtext.generator.ImplicitFragment
+	public Class<? extends XtextEditor> bindXtextEditor() {
+		return XbaseEditor.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.XtextEditor> bindXtextEditor() {
-		return org.eclipse.xtext.xbase.ui.editor.XbaseEditor.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ImplicitFragment
+	public Class<? extends XtextDocumentProvider> bindXtextDocumentProvider() {
+		return XbaseDocumentProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.model.XtextDocumentProvider> bindXtextDocumentProvider() {
-		return org.eclipse.xtext.xbase.ui.editor.XbaseDocumentProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ImplicitFragment
+	public Class<? extends OpenGeneratedFileHandler> bindOpenGeneratedFileHandler() {
+		return XbaseOpenGeneratedFileHandler.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
-		return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IProposalConflictHelper> bindIProposalConflictHelper() {
+		return AntlrProposalConflictHelper.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public void configureHighlightingLexer(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLLexer.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureContentAssistLexer(Binder binder) {
+		binder.bind(Lexer.class)
+			.annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST))
+			.to(InternalActionDSLLexer.class);
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureHighlightingLexer(Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class)
+			.annotatedWith(Names.named(LexerIdeBindings.HIGHLIGHTING))
+			.to(org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLLexer.class);
 	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.clustering.CurrentDescriptions.ResourceSetAware.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureHighlightingTokenDefProvider(Binder binder) {
+		binder.bind(ITokenDefProvider.class)
+			.annotatedWith(Names.named(LexerIdeBindings.HIGHLIGHTING))
+			.to(AntlrTokenDefProvider.class);
 	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
-		return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+		return DelegatingContentAssistContextFactory.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
+		return ActionDSLParser.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
-		return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureContentAssistLexerProvider(Binder binder) {
+		binder.bind(InternalActionDSLLexer.class).toProvider(LexerProvider.create(InternalActionDSLLexer.class));
 	}
-
-	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
-	public Class<? extends org.eclipse.xtext.builder.IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
-		return org.eclipse.xtext.builder.BuilderParticipant.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public void configureIResourceDescriptionsBuilderScope(Binder binder) {
+		binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(CurrentDescriptions.ResourceSetAware.class);
 	}
-
-	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
-	public org.eclipse.core.resources.IWorkspaceRoot bindIWorkspaceRootToInstance() {
-		return org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot();
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends IXtextEditorCallback> bindIXtextEditorCallback() {
+		return NatureAddingEditorCallback.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
-	public void configureBuilderPreferenceStoreInitializer(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("builderPreferenceInitializer")).to(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess.Initializer.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends IContextualOutputConfigurationProvider> bindIContextualOutputConfigurationProvider() {
+		return EclipseOutputConfigurationProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
-	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
-		return org.eclipse.osbp.xtext.action.ui.labeling.ActionDSLLabelProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public void configureIResourceDescriptionsPersisted(Binder binder) {
+		binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(IBuilderState.class);
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
-	public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(org.eclipse.osbp.xtext.action.ui.labeling.ActionDSLDescriptionLabelProvider.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+		return PersistentDataAwareDirtyResource.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider> bindIOutlineTreeProvider() {
-		return org.eclipse.osbp.xtext.action.ui.outline.ActionDSLOutlineTreeProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2
+	public Class<? extends IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
+		return BuilderParticipant.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
-		return org.eclipse.osbp.xtext.action.ui.outline.ActionDSLOutlineTreeProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2
+	public IWorkspaceRoot bindIWorkspaceRootToInstance() {
+		return ResourcesPlugin.getWorkspace().getRoot();
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
-		return org.eclipse.osbp.xtext.action.ui.quickfix.ActionDSLQuickfixProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2
+	public void configureBuilderPreferenceStoreInitializer(Binder binder) {
+		binder.bind(IPreferenceStoreInitializer.class)
+			.annotatedWith(Names.named("builderPreferenceInitializer"))
+			.to(BuilderPreferenceAccess.Initializer.class);
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.contentAssist.ContentAssistFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
-		return org.eclipse.osbp.xtext.action.ui.contentassist.ActionDSLProposalProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2
+	public Class<? extends ILabelProvider> bindILabelProvider() {
+		return ActionDSLLabelProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
-		return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2
+	public void configureResourceUIServiceLabelProvider(Binder binder) {
+		binder.bind(ILabelProvider.class).annotatedWith(ResourceServiceDescriptionLabelProvider.class).to(ActionDSLDescriptionLabelProvider.class);
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
-		return org.eclipse.osbp.xtext.action.ui.contentassist.antlr.ActionDSLParser.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return ActionDSLOutlineTreeProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
-	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.osbp.xtext.action.ui.contentassist.antlr.internal.InternalActionDSLLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.action.ui.contentassist.antlr.internal.InternalActionDSLLexer.class));
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return ActionDSLOutlineTreeProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
-	public void configureContentAssistLexer(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(org.eclipse.osbp.xtext.action.ui.contentassist.antlr.internal.InternalActionDSLLexer.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.quickfix.QuickfixProviderFragment2
+	public Class<? extends IssueResolutionProvider> bindIssueResolutionProvider() {
+		return ActionDSLQuickfixProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
-	public void configureIPreferenceStoreInitializer(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("RefactoringPreferences")).to(org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences.Initializer.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.contentAssist.ContentAssistFragment2
+	public Class<? extends IContentProposalProvider> bindIContentProposalProvider() {
+		return ActionDSLProposalProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
-	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameSupport.Factory> bindIRenameSupport$Factory() {
-		return org.eclipse.xtext.common.types.ui.refactoring.JdtRenameSupport.Factory.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
+	public void configureIPreferenceStoreInitializer(Binder binder) {
+		binder.bind(IPreferenceStoreInitializer.class)
+			.annotatedWith(Names.named("RefactoringPreferences"))
+			.to(RefactoringPreferences.Initializer.class);
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
-	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy.Provider> bindIRenameStrategy$Provider() {
-		return org.eclipse.xtext.common.types.ui.refactoring.participant.JvmMemberRenameStrategy.Provider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
+	public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
+		return JdtRenameSupport.Factory.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
-	public void configureJvmMemberRenameStrategy$Provider$Delegate(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.ui.refactoring.IRenameStrategy.Provider.class).annotatedWith(org.eclipse.xtext.common.types.ui.refactoring.participant.JvmMemberRenameStrategy.Provider.Delegate.class).to(org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategyProvider.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
+	public Class<? extends IRenameStrategy.Provider> bindIRenameStrategy$Provider() {
+		return JvmMemberRenameStrategy.Provider.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public java.lang.ClassLoader bindClassLoaderToInstance() {
-		return getClass().getClassLoader();
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
+	public void configureJvmMemberRenameStrategy$Provider$Delegate(Binder binder) {
+		binder.bind(IRenameStrategy.Provider.class).annotatedWith(JvmMemberRenameStrategy.Provider.Delegate.class).to(DefaultRenameStrategyProvider.class);
 	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
-		return org.eclipse.xtext.common.types.access.jdt.JdtTypeProviderFactory.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.types.TypesGeneratorFragment2
+	public Class<? extends PrefixMatcher> bindPrefixMatcher() {
+		return FQNPrefixMatcher.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
-		return org.eclipse.xtext.common.types.xtext.ui.JdtBasedSimpleTypeScopeProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends FindReferencesHandler> bindFindReferencesHandler() {
+		return JvmModelFindReferenceHandler.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.common.types.xtext.ui.ITypesProposalProvider> bindITypesProposalProvider() {
-		return org.eclipse.xtext.common.types.xtext.ui.JdtTypesProposalProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider> bindIJavaProjectProvider() {
-		return org.eclipse.xtext.common.types.xtext.ui.XtextResourceSetBasedProjectProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
-		return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.IValidationJobScheduler> bindIValidationJobScheduler() {
-		return org.eclipse.xtext.common.types.xtext.ui.JdtValidationJobScheduler.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.refactoring.impl.RefactoringResourceSetProvider> bindRefactoringResourceSetProvider() {
-		return org.eclipse.xtext.common.types.ui.refactoring.JvmRefactoringResourceSetProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.AbstractAntlrTokenToAttributeIdMapper> bindAbstractAntlrTokenToAttributeIdMapper() {
-		return org.eclipse.xtext.xbase.ui.syntaxcoloring.XbaseTokenToAttributeIdMapper.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider.ReferenceProposalCreator> bindAbstractJavaBasedContentProposalProvider$ReferenceProposalCreator() {
-		return org.eclipse.xtext.xbase.ui.contentassist.XbaseReferenceProposalCreator.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.jface.text.contentassist.IContentAssistProcessor> bindIContentAssistProcessor() {
-		return org.eclipse.xtext.ui.editor.contentassist.RepeatedContentAssistProcessor.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() {
-		return org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingCalculator.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration> bindIHighlightingConfiguration() {
-		return org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingConfiguration.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider> bindIEObjectHoverProvider() {
-		return org.eclipse.xtext.xbase.ui.hover.XbaseHoverProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.hover.IEObjectHover> bindIEObjectHover() {
-		return org.eclipse.xtext.xbase.ui.hover.XbaseDispatchingEObjectTextHover.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
-		return org.eclipse.xtext.xbase.ui.hover.XbaseHoverDocumentationProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider.CrossRefResolutionConverter> bindDefaultQuickfixProvider$CrossRefResolutionConverter() {
-		return org.eclipse.xtext.xbase.ui.quickfix.XbaseCrossRefResolutionConverter.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator> bindXbaseUIValidator() {
-		return org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper> bindIHyperlinkHelper() {
-		return org.eclipse.xtext.xbase.ui.navigation.TypeLiteralAwareHyperlinkHelper.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.IFeatureScopeTracker.Provider> bindIFeatureScopeTracker$Provider() {
-		return org.eclipse.xtext.xbase.typesystem.internal.OptimizingFeatureScopeTrackerProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler> bindFindReferencesHandler() {
-		return org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelFindReferenceHandler.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends ReferenceQueryExecutor> bindReferenceQueryExecutor() {
+		return JvmModelReferenceQueryExecutor.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.findrefs.ReferenceQueryExecutor> bindReferenceQueryExecutor() {
-		return org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelReferenceQueryExecutor.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return JvmModelDependentElementsCalculator.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
-		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelDependentElementsCalculator.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+		return CombinedJvmJdtRenameRefactoringProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
-		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameRefactoringProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IReferenceUpdater> bindIReferenceUpdater() {
+		return XbaseReferenceUpdater.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.refactoring.IReferenceUpdater> bindIReferenceUpdater() {
-		return org.eclipse.xtext.xbase.ui.refactoring.XbaseReferenceUpdater.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IRenameContextFactory> bindIRenameContextFactory() {
+		return CombinedJvmJdtRenameContextFactory.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameContextFactory> bindIRenameContextFactory() {
-		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameContextFactory.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IRenameStrategy> bindIRenameStrategy() {
+		return DefaultJvmModelRenameStrategy.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.common.types.ui.refactoring.participant.JdtRenameParticipant.ContextFactory> bindJdtRenameParticipant$ContextFactory() {
-		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelJdtRenameParticipantContext.ContextFactory.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends JdtRenameParticipant.ContextFactory> bindJdtRenameParticipant$ContextFactory() {
+		return JvmModelJdtRenameParticipantContext.ContextFactory.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy> bindIRenameStrategy() {
-		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.DefaultJvmModelRenameStrategy.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends OutlineNodeElementOpener> bindOutlineNodeElementOpener() {
+		return JvmOutlineNodeElementOpener.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.OutlineNodeElementOpener> bindOutlineNodeElementOpener() {
-		return org.eclipse.xtext.xbase.ui.jvmmodel.outline.JvmOutlineNodeElementOpener.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends GlobalURIEditorOpener> bindGlobalURIEditorOpener() {
+		return GlobalDerivedMemberAwareURIEditorOpener.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.GlobalURIEditorOpener> bindGlobalURIEditorOpener() {
-		return org.eclipse.xtext.common.types.ui.navigation.GlobalDerivedMemberAwareURIEditorOpener.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IJavaSearchParticipation> bindIJavaSearchParticipation() {
+		return IJavaSearchParticipation.No.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.occurrences.IOccurrenceComputer> bindIOccurrenceComputer() {
-		return org.eclipse.xtext.xbase.ui.jvmmodel.occurrence.JvmModelOccurrenceComputer.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public void configureLanguageSpecificURIEditorOpener(Binder binder) {
+		if (PlatformUI.isWorkbenchRunning()) {
+			binder.bind(IURIEditorOpener.class).annotatedWith(LanguageSpecific.class).to(DerivedMemberAwareEditorOpener.class);
+			binder.bind(IDerivedMemberAwareEditorOpener.class).to(DerivedMemberAwareEditorOpener.class);
+		}
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation> bindIJavaSearchParticipation() {
-		return org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation.No.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IUnresolvedTypeResolver> bindIUnresolvedTypeResolver() {
+		return InteractiveUnresolvedTypeResolver.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public void configureLanguageSpecificURIEditorOpener(com.google.inject.Binder binder) {
-		if (org.eclipse.ui.PlatformUI.isWorkbenchRunning()) { 
-			binder.bind(org.eclipse.xtext.ui.editor.IURIEditorOpener.class).annotatedWith(org.eclipse.xtext.ui.LanguageSpecific.class).to(org.eclipse.xtext.xbase.ui.jvmmodel.navigation.DerivedMemberAwareEditorOpener.class); 
-			binder.bind(org.eclipse.xtext.common.types.ui.navigation.IDerivedMemberAwareEditorOpener.class).to(org.eclipse.xtext.xbase.ui.jvmmodel.navigation.DerivedMemberAwareEditorOpener.class); 
-		};
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends ITypesProposalProvider> bindITypesProposalProvider() {
+		return ImportingTypesProposalProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.jface.text.hyperlink.IHyperlinkDetector> bindIHyperlinkDetector() {
-		return org.eclipse.xtext.xbase.ui.navigation.XbaseHyperlinkDetector.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends XtextTemplateContextType> bindXtextTemplateContextType() {
+		return XbaseTemplateContextType.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixes> bindJavaTypeQuickfixes() {
-		return org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixesNoImportSection.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Provider<? extends TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+		return AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
-	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
-		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Provider<? extends LanguageRegistry> provideLanguageRegistry() {
+		return AccessibleCodetemplatesActivator.getLanguageRegistry();
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
-	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry> provideLanguageRegistry() {
-		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getLanguageRegistry();
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	@SingletonBinding(eager=true)
+	public Class<? extends LanguageRegistrar> bindLanguageRegistrar() {
+		return LanguageRegistrar.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
-	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar> bindLanguageRegistrar() {
-		return org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Class<? extends XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+		return AdvancedTemplatesPreferencePage.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
-		return org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Class<? extends IPartialEditingContentAssistParser> bindIPartialEditingContentAssistParser() {
+		return PartialActionDSLContentAssistParser.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser> bindIPartialContentAssistParser() {
-		return org.eclipse.osbp.xtext.action.ui.contentassist.antlr.PartialActionDSLContentAssistParser.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Class<? extends IPartialEditingContentAssistContextFactory> bindIPartialEditingContentAssistContextFactory() {
+		return PartialEditingContentAssistContextFactory.class;
 	}
-
-	// contributed by org.eclipse.xtext.ui.generator.compare.CompareFragment
-	public Class<? extends org.eclipse.compare.IViewerCreator> bindIViewerCreator() {
-		return org.eclipse.xtext.ui.compare.DefaultViewerCreator.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.compare.CompareFragment2
+	public Class<? extends IViewerCreator> bindIViewerCreator() {
+		return DefaultViewerCreator.class;
 	}
-
-
+	
 }
diff --git a/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/ActionDSLExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/ActionDSLExecutableExtensionFactory.java
index a72993a..a2a9fb7 100644
--- a/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/ActionDSLExecutableExtensionFactory.java
+++ b/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/ActionDSLExecutableExtensionFactory.java
@@ -10,16 +10,17 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action.ui;
 
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.action.ui.internal.ActionActivator;
 import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
 import org.osgi.framework.Bundle;
 
-import com.google.inject.Injector;
-
-import org.eclipse.osbp.xtext.action.ui.internal.ActionDSLActivator;
-
 /**
  * This class was generated. Customizations should only happen in a newly
  * introduced subclass. 
@@ -28,12 +29,12 @@
 
 	@Override
 	protected Bundle getBundle() {
-		return ActionDSLActivator.getInstance().getBundle();
+		return ActionActivator.getInstance().getBundle();
 	}
 	
 	@Override
 	protected Injector getInjector() {
-		return ActionDSLActivator.getInstance().getInjector(ActionDSLActivator.ORG_ECLIPSE_OSBP_XTEXT_ACTION_ACTIONDSL);
+		return ActionActivator.getInstance().getInjector(ActionActivator.ORG_ECLIPSE_OSBP_XTEXT_ACTION_ACTIONDSL);
 	}
 	
 }
diff --git a/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/contentassist/AbstractActionDSLProposalProvider.java b/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/contentassist/AbstractActionDSLProposalProvider.java
index bc8b647..16d0c94 100644
--- a/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/contentassist/AbstractActionDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/contentassist/AbstractActionDSLProposalProvider.java
@@ -10,34 +10,60 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action.ui.contentassist;
 
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.xtext.*;
-import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.osbp.xtext.oxtype.ui.contentassist.OXtypeProposalProvider;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.CrossReference;
+import org.eclipse.xtext.RuleCall;
 import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
 
 /**
- * Represents a generated, default implementation of superclass {@link org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider}.
+ * Represents a generated, default implementation of superclass {@link OXtypeProposalProvider}.
  * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
  * with a more concrete subtype. 
  */
-@SuppressWarnings("all")
-public class AbstractActionDSLProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
-		
+public abstract class AbstractActionDSLProposalProvider extends OXtypeProposalProvider {
+
+	public void completeActionModel_ImportSection(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeActionModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeActionPackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeActionPackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeActionPackage_Commands(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeActionPackage_Toolbars(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeActionCommand_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionCommand_HasDescription(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeActionCommand_Description(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionCommand_HasKeyBinding(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeActionCommand_KeyBinding(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionCommand_ActionType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeActionToolbar_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -59,24 +85,12 @@
 	public void completeActionButton_DescriptionValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeActionButton_Command(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeActionButton_IconURI(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeActionButton_Group(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
-	}
-	public void completeActionButton_Canexecute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
-	}
-	public void completeActionButton_Executeparameter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
-	}
-	public void completeActionButton_ActionType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
-	public void completeActionButton_Message(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
-	}
 	public void completeActionTask_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -101,22 +115,61 @@
 	public void completeActionDatainterchange_DataRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeActionGeneric_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeActionUI_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeActionFunction_ActionGroup(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionFunction_CanExecute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionFunction_HasExecuteImmediate(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeActionFunction_ExecuteImmediate(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionFunction_HasMessage(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeActionFunction_MessageCategory(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionFunction_OnFailMessage(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionFunction_HasSuccessMessage(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeActionFunction_OnSuccessMessage(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionFunction_HasExecuteLater(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeActionFunction_ExecuteLater(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeActionFunction_HasStartedMessage(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeActionFunction_OnStartedMessage(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeActionParameter_Parameter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeActionImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
-    
+
 	public void complete_ActionModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
 	public void complete_ActionPackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_ActionCommand(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_ActionToolbar(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -147,27 +200,15 @@
 	public void complete_ActionDatainterchange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_ActionGeneric(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_ActionUI(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ActionFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
 	public void complete_ActionParameter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_ActionImport(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
-	public void complete_SignedNumber(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
-	public void complete_ActionQualifiedNameWithWildCard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
-	public void complete_QualifiedName(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
-	public void complete_ValidID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_TRANSLATABLEID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -195,4 +236,7 @@
 	public void complete_DatainterchangeActionEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_UIActionEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 }
diff --git a/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/internal/ActionActivator.java b/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/internal/ActionActivator.java
new file mode 100644
index 0000000..bb2a713
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/src-gen/org/eclipse/osbp/xtext/action/ui/internal/ActionActivator.java
@@ -0,0 +1,106 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+package org.eclipse.osbp.xtext.action.ui.internal;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+import java.util.Collections;
+import java.util.Map;
+import org.apache.log4j.Logger;
+import org.eclipse.osbp.xtext.action.ActionDSLRuntimeModule;
+import org.eclipse.osbp.xtext.action.ui.ActionDSLUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class ActionActivator extends AbstractUIPlugin {
+
+	public static final String ORG_ECLIPSE_OSBP_XTEXT_ACTION_ACTIONDSL = "org.eclipse.osbp.xtext.action.ActionDSL";
+	
+	private static final Logger logger = Logger.getLogger(ActionActivator.class);
+	
+	private static ActionActivator INSTANCE;
+	
+	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		INSTANCE = this;
+	}
+	
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		injectors.clear();
+		INSTANCE = null;
+		super.stop(context);
+	}
+	
+	public static ActionActivator getInstance() {
+		return INSTANCE;
+	}
+	
+	public Injector getInjector(String language) {
+		synchronized (injectors) {
+			Injector injector = injectors.get(language);
+			if (injector == null) {
+				injectors.put(language, injector = createInjector(language));
+			}
+			return injector;
+		}
+	}
+	
+	protected Injector createInjector(String language) {
+		try {
+			Module runtimeModule = getRuntimeModule(language);
+			Module sharedStateModule = getSharedStateModule();
+			Module uiModule = getUiModule(language);
+			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+			return Guice.createInjector(mergedModule);
+		} catch (Exception e) {
+			logger.error("Failed to create injector for " + language);
+			logger.error(e.getMessage(), e);
+			throw new RuntimeException("Failed to create injector for " + language, e);
+		}
+	}
+	
+	protected Module getRuntimeModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_ACTION_ACTIONDSL.equals(grammar)) {
+			return new ActionDSLRuntimeModule();
+		}
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_ACTION_ACTIONDSL.equals(grammar)) {
+			return new ActionDSLUiModule(this);
+		}
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/ActionDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/ActionDSLDocumentationTranslator.java
index 055fd86..ea48b1b 100644
--- a/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/ActionDSLDocumentationTranslator.java
+++ b/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/ActionDSLDocumentationTranslator.java
@@ -14,7 +14,6 @@
 
 import java.util.ResourceBundle;
 
-import org.eclipse.osbp.utils.constants.GeneratorConstants;
 import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
 
 public class ActionDSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
@@ -27,6 +26,6 @@
     
     @Override
     protected ResourceBundle getResourceBundle() {
-        return java.util.ResourceBundle.getBundle(GeneratorConstants.I18N_RESOURCE_FULL_BUNDLE_NAME, getLocale(), getClass().getClassLoader());
+        return java.util.ResourceBundle.getBundle("i18n.I18N", getLocale(), getClass().getClassLoader());
     }
 }
diff --git a/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/ActionDSLUiModule.java b/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/ActionDSLUiModule.java
index 48bec98..804f1f4 100644
--- a/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/ActionDSLUiModule.java
+++ b/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/ActionDSLUiModule.java
@@ -11,41 +11,69 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.action.ui;
+package org.eclipse.osbp.xtext.action.ui;
 
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper;
+import org.eclipse.osbp.xtext.oxtype.imports.IUnresolvedEObjectResolver;
+import org.eclipse.osbp.xtext.oxtype.ui.contentassist.OXTypeReplacingAppendable;
+import org.eclipse.osbp.xtext.oxtype.ui.contentassist.OXtypeProposalProvider;
+import org.eclipse.osbp.xtext.oxtype.ui.imports.InteractiveUnresolvedEClassResolver;
+import org.eclipse.osbp.xtext.oxtype.ui.quickfix.CustomJavaTypeQuickfixes;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider;
 import org.eclipse.xtext.ui.editor.hover.IEObjectHover;
 import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
 import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+import org.eclipse.xtext.xbase.ui.contentassist.ReplacingAppendable;
+import org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixes;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper;
-
 /**
  * Use this class to register components to be used within the IDE.
  */
-public class ActionDSLUiModule extends org.eclipse.osbp.xtext.action.ui.AbstractActionDSLUiModule {
-	
-	private static Logger LOGGER = LoggerFactory.getLogger(ActionDSLUiModule.class);
-	
+public class ActionDSLUiModule extends
+		org.eclipse.osbp.xtext.action.ui.AbstractActionDSLUiModule {
+
+	private static Logger LOGGER = LoggerFactory
+			.getLogger(ActionDSLUiModule.class);
+
 	public ActionDSLUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
-	    BasicDSLUiModuleHelper.unitTestTemplates(plugin, LOGGER);
+		BasicDSLUiModuleHelper.unitTestTemplates(plugin, LOGGER);
 	}
 	
 	@Override
+	public Class<? extends AbstractJavaBasedContentProposalProvider.ReferenceProposalCreator> bindAbstractJavaBasedContentProposalProvider$ReferenceProposalCreator() {
+		return OXtypeProposalProvider.CustomReferenceProposalCreator.class;
+	}
+
+	@Override
 	public Class<? extends IEObjectHover> bindIEObjectHover() {
-	    return ActionDSLEObjectHover.class;
+		return ActionDSLEObjectHover.class;
 	}
-	
+
 	@Override
 	public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
-	    return ActionDSLEObjectHoverProvider.class;
+		return ActionDSLEObjectHoverProvider.class;
 	}
-	
+
 	@Override
 	public Class<? extends IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
-	    return ActionDSLEObjectHoverDocumentationProvider.class;
+		return ActionDSLEObjectHoverDocumentationProvider.class;
 	}
+
+	@SuppressWarnings("restriction")
+	public Class<? extends ReplacingAppendable.Factory> bindReplacingAppendable$Factory() {
+		return OXTypeReplacingAppendable.Factory.class;
+	}
+
+	public Class<? extends IUnresolvedEObjectResolver> bindIUnresolvedEObjectResolver() {
+		return InteractiveUnresolvedEClassResolver.class;
+	}
+
+	public Class<? extends JavaTypeQuickfixes> bindJavaTypeQuickfixes() {
+		return CustomJavaTypeQuickfixes.class;
+	}
+
 }
diff --git a/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/contentassist/ActionDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/contentassist/ActionDSLProposalProvider.xtend
index 2c573a7..46282f3 100644
--- a/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/contentassist/ActionDSLProposalProvider.xtend
+++ b/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/contentassist/ActionDSLProposalProvider.xtend
@@ -37,6 +37,7 @@
 import org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher
 import org.eclipse.xtext.util.Strings
 import org.eclipse.xtext.GrammarUtil
+import org.eclipse.jface.bindings.keys.KeyLookupFactory
 
 class ImageFileNameTextApplier extends ReplacementTextApplier {
 	var ContentAssistContext context
@@ -112,11 +113,6 @@
 		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
 	}
 
-	override public void complete_ActionQualifiedNameWithWildCard(EObject model, RuleCall ruleCall, ContentAssistContext context,
-		ICompletionProposalAcceptor acceptor) {
-		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
-	}
-
 	// ------------------------ delegates to TerminalsProposalProvider -----------------
 	override public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context,
 		ICompletionProposalAcceptor acceptor) {
diff --git a/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/quickfix/ActionDSLQuickfixProvider.xtend b/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/quickfix/ActionDSLQuickfixProvider.xtend
index e85b0dc..fb853f1 100644
--- a/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/quickfix/ActionDSLQuickfixProvider.xtend
+++ b/org.eclipse.osbp.xtext.action.ui/src/org/eclipse/osbp/xtext/action/ui/quickfix/ActionDSLQuickfixProvider.xtend
@@ -14,27 +14,26 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.action.ui.quickfix
 
+import org.eclipse.osbp.xtext.oxtype.ui.quickfix.OXtypeQuickfixProvider
+
 //import org.eclipse.xtext.ui.editor.quickfix.Fix
 //import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor
 //import org.eclipse.xtext.validation.Issue
-
 /**
  * Custom quickfixes.
  *
  * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
  */
-class ActionDSLQuickfixProvider extends org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider {
-
-//	@Fix(MyDslValidator::INVALID_NAME)
-//	def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
-//		acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
-//			context |
-//			val xtextDocument = context.xtextDocument
-//			val firstLetter = xtextDocument.get(issue.offset, 1)
-//			xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
-//		]
-//	}
+class ActionDSLQuickfixProvider extends OXtypeQuickfixProvider {
+	//	@Fix(MyDslValidator::INVALID_NAME)
+	//	def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
+	//		acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
+	//			context |
+	//			val xtextDocument = context.xtextDocument
+	//			val firstLetter = xtextDocument.get(issue.offset, 1)
+	//			xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
+	//		]
+	//	}
 }
diff --git a/org.eclipse.osbp.xtext.action.ui/xtend-gen/.gitignore b/org.eclipse.osbp.xtext.action.ui/xtend-gen/.gitignore
new file mode 100644
index 0000000..bdea310
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/xtend-gen/.gitignore
@@ -0,0 +1,5 @@
+/.ActionDSLDescriptionLabelProvider.xtendbin
+/.ActionDSLLabelProvider.xtendbin
+/.ActionDSLOutlineTreeProvider.xtendbin
+/.ActionDSLProposalProvider.xtendbin
+/.ActionDSLQuickfixProvider.xtendbin
diff --git a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/.gitignore b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/.gitignore
new file mode 100644
index 0000000..f91cb98
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/.gitignore
@@ -0,0 +1,2 @@
+/ActionDSLProposalProvider.java
+/ImageFileNameTextApplier.java
diff --git a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/ActionDSLProposalProvider.java b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/ActionDSLProposalProvider.java
index 30f8add..ac8866d 100644
--- a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/ActionDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/ActionDSLProposalProvider.java
@@ -22,7 +22,6 @@
 import org.eclipse.osbp.xtext.action.ui.ActionDSLDocumentationTranslator;
 import org.eclipse.osbp.xtext.action.ui.contentassist.AbstractActionDSLProposalProvider;
 import org.eclipse.osbp.xtext.action.ui.contentassist.ImageFileNameTextApplier;
-import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
 import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
 import org.eclipse.xtext.Assignment;
 import org.eclipse.xtext.Keyword;
@@ -42,14 +41,16 @@
   
   private String imageSelectionPrompt = "Select image file...";
   
+  @Override
   protected StyledString getKeywordDisplayString(final Keyword keyword) {
-    BasicDSLDocumentationTranslator _instance = ActionDSLDocumentationTranslator.instance();
-    return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, _instance);
+    return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, 
+      ActionDSLDocumentationTranslator.instance());
   }
   
   /**
    * This override will enable 1 length non letter characters as keyword.
    */
+  @Override
   protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
     return true;
   }
@@ -60,14 +61,14 @@
     boolean _notEquals = (!Objects.equal(fileName, null));
     if (_notEquals) {
       ImageFileNameTextApplier applier = new ImageFileNameTextApplier();
-      String[] _split = fileExtensions.split(",");
-      applier.setExtensions(_split);
+      applier.setExtensions(fileExtensions.split(","));
       applier.setContext(context);
       fileName.setTextApplier(applier);
     }
     acceptor.accept(fileName);
   }
   
+  @Override
   public void completeActionButton_IconURI(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.imageFilePickerProposal(model, assignment, context, acceptor, ".jpg,.jpeg,.png");
   }
@@ -75,27 +76,28 @@
   /**
    * This method decided which proposals will be valid.
    */
+  @Override
   protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
     boolean result = super.isValidProposal(proposal, prefix, context);
     return result;
   }
   
+  @Override
   public void complete_QualifiedName(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
   }
   
-  public void complete_ActionQualifiedNameWithWildCard(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
-    this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
-  }
-  
+  @Override
   public void complete_TRANSLATABLESTRING(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.provider.complete_STRING(model, ruleCall, context, acceptor);
   }
   
+  @Override
   public void complete_TRANSLATABLEID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.provider.complete_ID(model, ruleCall, context, acceptor);
   }
   
+  @Override
   public void complete_ID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.provider.complete_ID(model, ruleCall, context, acceptor);
   }
diff --git a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/ImageFileNameTextApplier.java b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/ImageFileNameTextApplier.java
index 9396a9d..7ad3e8f 100644
--- a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/ImageFileNameTextApplier.java
+++ b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/contentassist/ImageFileNameTextApplier.java
@@ -14,9 +14,7 @@
  */
 package org.eclipse.osbp.xtext.action.ui.contentassist;
 
-import org.eclipse.jface.text.ITextViewer;
 import org.eclipse.osbp.fork.mihalis.opal.widgets.ImageSelectorDialog;
-import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Display;
@@ -39,10 +37,9 @@
     return this.extensions = fileExtensions;
   }
   
+  @Override
   public String getActualReplacementString(final ConfigurableCompletionProposal proposal) {
-    ITextViewer _viewer = this.context.getViewer();
-    StyledText _textWidget = _viewer.getTextWidget();
-    Display display = _textWidget.getDisplay();
+    Display display = this.context.getViewer().getTextWidget().getDisplay();
     Shell shell = new Shell(display);
     Point _point = new Point((display.getActiveShell().getLocation().x + 30), (display.getActiveShell().getLocation().y + 30));
     shell.setLocation(_point);
@@ -51,7 +48,6 @@
     ImageSelectorDialog imageSelectorDialog = new ImageSelectorDialog(shell, 16);
     imageSelectorDialog.setFilterExtensions(this.extensions);
     String imageFileName = imageSelectorDialog.open(true);
-    String _concat = "\"".concat(imageFileName);
-    return _concat.concat("\"");
+    return "\"".concat(imageFileName).concat("\"");
   }
 }
diff --git a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/labeling/.gitignore b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/labeling/.gitignore
new file mode 100644
index 0000000..20991fa
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/labeling/.gitignore
@@ -0,0 +1,2 @@
+/ActionDSLDescriptionLabelProvider.java
+/ActionDSLLabelProvider.java
diff --git a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/outline/.gitignore b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/outline/.gitignore
new file mode 100644
index 0000000..6baa5e4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/outline/.gitignore
@@ -0,0 +1 @@
+/ActionDSLOutlineTreeProvider.java
diff --git a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/quickfix/.gitignore b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/quickfix/.gitignore
new file mode 100644
index 0000000..d59d585
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/quickfix/.gitignore
@@ -0,0 +1 @@
+/ActionDSLQuickfixProvider.java
diff --git a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/quickfix/ActionDSLQuickfixProvider.java b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/quickfix/ActionDSLQuickfixProvider.java
index 0c6af6b..2bcb3e3 100644
--- a/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/quickfix/ActionDSLQuickfixProvider.java
+++ b/org.eclipse.osbp.xtext.action.ui/xtend-gen/org/eclipse/osbp/xtext/action/ui/quickfix/ActionDSLQuickfixProvider.java
@@ -14,7 +14,7 @@
  */
 package org.eclipse.osbp.xtext.action.ui.quickfix;
 
-import org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider;
+import org.eclipse.osbp.xtext.oxtype.ui.quickfix.OXtypeQuickfixProvider;
 
 /**
  * Custom quickfixes.
@@ -22,5 +22,5 @@
  * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
  */
 @SuppressWarnings("all")
-public class ActionDSLQuickfixProvider extends XbaseWithAnnotationsQuickfixProvider {
+public class ActionDSLQuickfixProvider extends OXtypeQuickfixProvider {
 }
diff --git a/org.eclipse.osbp.xtext.action/.classpath b/org.eclipse.osbp.xtext.action/.classpath
new file mode 100644
index 0000000..09a3416
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/.classpath
@@ -0,0 +1,10 @@
+<?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="emf-gen/"/>
+	<classpathentry kind="src" path="xtend-gen/"/>
+	<classpathentry kind="src" path="src-gen/"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.action/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.xtext.action/.settings/com.vaadin.integration.eclipse.prefs
new file mode 100644
index 0000000..0904e44
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/.settings/com.vaadin.integration.eclipse.prefs
@@ -0,0 +1,2 @@
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.7"]
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.xtext.action/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.action/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.xtext.action/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs b/org.eclipse.osbp.xtext.action/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs
new file mode 100644
index 0000000..5e53854
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs
@@ -0,0 +1,12 @@
+autobuilding=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.cleanDirectory=false
+outlet.DEFAULT_OUTPUT.cleanupDerived=true
+outlet.DEFAULT_OUTPUT.createDirectory=true
+outlet.DEFAULT_OUTPUT.derived=true
+outlet.DEFAULT_OUTPUT.directory=./emf-gen
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.keepLocalHistory=true
+outlet.DEFAULT_OUTPUT.override=true
diff --git a/org.eclipse.osbp.xtext.action/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.action/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/.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/org.eclipse.osbp.xtext.action/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.action/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.xtext.action/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.action/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..c6c3454
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,23 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+BuilderConfiguration.is_project_specific=true
+autobuilding=true
+eclipse.preferences.version=1
+is_project_specific=true
+outlet.DEFAULT_OUTPUT.cleanDirectory=false
+outlet.DEFAULT_OUTPUT.cleanupDerived=true
+outlet.DEFAULT_OUTPUT.createDirectory=true
+outlet.DEFAULT_OUTPUT.derived=true
+outlet.DEFAULT_OUTPUT.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
+outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
+outlet.DEFAULT_OUTPUT.keepLocalHistory=false
+outlet.DEFAULT_OUTPUT.override=true
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.emf-gen.ignore=
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.src-gen.ignore=
+outlet.DEFAULT_OUTPUT.sourceFolder.src.directory=
+outlet.DEFAULT_OUTPUT.sourceFolder.src.ignore=
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.directory=xtend-gen
+outlet.DEFAULT_OUTPUT.sourceFolder.xtend-gen.ignore=
+outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
diff --git a/org.eclipse.osbp.xtext.action/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.action/META-INF/MANIFEST.MF
index fb9a393..721d9dd 100644
--- a/org.eclipse.osbp.xtext.action/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.action/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@
 Bundle-Vendor: Eclipse OSBP
 Bundle-Localization: plugin
 Bundle-Version: 0.9.0.qualifier
-Bundle-ClassPath: .
+Bundle-ClassPath: .,src/,src-gen/,xtend-gen/
 Bundle-SymbolicName: org.eclipse.osbp.xtext.action;singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
@@ -15,40 +15,35 @@
  org.eclipse.e4.ui.model.workbench,
  org.eclipse.e4.core.services,
  org.eclipse.core.runtime,
- org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";resolution:=optional;visibility:=reexport,
- org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
- org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
- org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.xbase;bundle-version="[2.11.0,2.12.0)";resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.generator;bundle-version="[2.11.0,2.12.0)";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.common.types;bundle-version="[2.11.0,2.12.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.emf.common,
  org.eclipse.emf.ecore;visibility:=reexport,
  org.eclipse.emf.ecore.xcore,
  org.eclipse.emf.ecore.xcore.lib;bundle-version="1.1.0",
  org.eclipse.emf.codegen.ecore;resolution:=optional,
  org.eclipse.emf.mwe.utils;resolution:=optional,
- org.eclipse.emf.mwe2.launch;resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="[2.9.0,2.10.0)";resolution:=optional,
  org.antlr.runtime,
  mondrian.osgi;bundle-version="[3.5.0,3.5.1)",
  org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
- com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
- com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
- org.eclipse.core.databinding,
- org.eclipse.core.databinding.beans,
- org.eclipse.osgi.util;bundle-version="3.3.0",
+ com.vaadin.shared;bundle-version="[7.7.6,7.8.0)",
+ com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
+ org.eclipse.core.databinding;bundle-version="[1.6.0,1.7.0)",
+ org.eclipse.core.databinding.beans;bundle-version="[1.3.100,1.4.0)",
  org.eclipse.e4.ui.services,
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.dsl.xtext.lazyresolver;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.dsl.xtext.lazyresolver.api;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.builder.types.loader.api;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.builder.types.loader.runtime;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.builder.xbase.setups;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
  org.eclipse.osbp.xtext.i18n;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.basic;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
@@ -56,9 +51,16 @@
  org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.messagedsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
  org.apache.commons.lang;bundle-version="2.6.0";resolution:=optional,
- org.eclipse.osbp.xtext.datainterchange;bundle-version="0.9.0",
- org.eclipse.osbp.persistence;bundle-version="0.9.0",
- org.eclipse.osbp.xtext.datainterchange.common;bundle-version="0.9.0"
+ org.eclipse.osbp.xtext.datainterchange;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.datainterchange.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.oxtype;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtend.lib,
+ org.eclipse.osbp.datainterchange.api;bundle-version="0.9.0",
+ org.eclipse.osbp.preferences;bundle-version="0.9.0",
+ org.eclipse.osbp.utils;bundle-version="0.9.0",
+ org.eclipse.osgi.services;bundle-version="3.5.100",
+ org.eclipse.e4.ui.di;bundle-version="1.1.100",
+ org.eclipse.osbp.bpm.api;bundle-version="0.9.0"
 Import-Package: javax.validation,
  javax.validation.constraints,
  org.apache.log4j,
@@ -66,13 +68,15 @@
  org.eclipse.e4.core.di.extensions,
  org.eclipse.e4.ui.workbench,
  org.eclipse.osbp.bpm.api;version="0.9.0",
+ org.eclipse.osbp.core.api.persistence;version="0.9.0",
  org.eclipse.osbp.eventbroker;version="0.9.0",
+ org.eclipse.osbp.ui.api.contextfunction;version="0.9.0",
+ org.eclipse.osbp.ui.api.customfields;version="0.9.0",
+ org.eclipse.osbp.ui.api.e4;version="0.9.0",
+ org.eclipse.osbp.ui.api.metadata;version="0.9.0",
  org.eclipse.osbp.ui.api.themes;version="0.9.0",
  org.eclipse.osbp.ui.api.user;version="0.9.0",
- org.eclipse.osbp.utils.constants;version="0.9.0",
- org.eclipse.osbp.utils.theme;version="0.9.0",
- org.eclipse.osbp.utils.xtext;version="0.9.0",
- org.osgi.service.event;version="1.3.0"
+ org.eclipse.osbp.vaaclipse.api;version="0.9.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.xtext.action;version="0.9.0",
  org.eclipse.osbp.xtext.action.common;version="0.9.0",
@@ -85,5 +89,6 @@
  org.eclipse.osbp.xtext.action.services;version="0.9.0",
  org.eclipse.osbp.xtext.action.util;version="0.9.0",
  org.eclipse.osbp.xtext.action.validation;version="0.9.0",
- org.eclipse.osbp.xtext.action.valueconverter;version="0.9.0"
+ org.eclipse.osbp.xtext.action.valueconverter;version="0.9.0",
+ org.eclipse.osbp.xtext.action.scoping
 Bundle-Activator: org.eclipse.osbp.xtext.action.Activator
diff --git a/org.eclipse.osbp.xtext.action/build.properties b/org.eclipse.osbp.xtext.action/build.properties
index 77bc647..1eb2f49 100644
--- a/org.eclipse.osbp.xtext.action/build.properties
+++ b/org.eclipse.osbp.xtext.action/build.properties
@@ -1,14 +1,21 @@
 # Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 #  All rights reserved.
 
-bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+bin.includes = about.properties,\
+               about.mappings,\
+               about.ini,\
+               about.html,\
+               .,\
                .settings/,\
                model/,\
                META-INF/,\
                plugin.xml,\
                plugin.properties,\
                LICENSE.txt,\
-               license.html
+               license.html,\
+               src/,\
+               src-gen/,\
+               xtend-gen/
 jars.compile.order = .
 source.. = emf-gen/,\
 		   xtend-gen/,\
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionBase.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionBase.java
index 3fd07c8..2ea9af8 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionBase.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionBase.java
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionBase#getName <em>Name</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionBase()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionButton.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionButton.java
index 4ee0126..799f8bb 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionButton.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionButton.java
@@ -14,10 +14,6 @@
  */
 package org.eclipse.osbp.xtext.action;
 
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
-
-import org.eclipse.osbp.xtext.messagedsl.MessageItem;
 
 /**
  * <!-- begin-user-doc -->
@@ -26,17 +22,13 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionButton#isDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionButton#getDescriptionValue <em>Description Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionButton#getIconURI <em>Icon URI</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.ActionButton#getGroup <em>Group</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.ActionButton#getCanexecute <em>Canexecute</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.ActionButton#getExecuteparameter <em>Executeparameter</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.ActionButton#getActionType <em>Action Type</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.ActionButton#getMessage <em>Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionButton#getCommand <em>Command</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionButton()
  * @model
@@ -122,133 +114,29 @@
 	void setIconURI(String value);
 
 	/**
-	 * Returns the value of the '<em><b>Group</b></em>' reference.
+	 * Returns the value of the '<em><b>Command</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Group</em>' reference isn't clear,
+	 * If the meaning of the '<em>Command</em>' reference isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Group</em>' reference.
-	 * @see #setGroup(FunctionLibraryGroup)
-	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionButton_Group()
+	 * @return the value of the '<em>Command</em>' reference.
+	 * @see #setCommand(ActionCommand)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionButton_Command()
 	 * @model
 	 * @generated
 	 */
-	FunctionLibraryGroup getGroup();
+	ActionCommand getCommand();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionButton#getGroup <em>Group</em>}' reference.
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionButton#getCommand <em>Command</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Group</em>' reference.
-	 * @see #getGroup()
+	 * @param value the new value of the '<em>Command</em>' reference.
+	 * @see #getCommand()
 	 * @generated
 	 */
-	void setGroup(FunctionLibraryGroup value);
-
-	/**
-	 * Returns the value of the '<em><b>Canexecute</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Canexecute</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Canexecute</em>' reference.
-	 * @see #setCanexecute(FunctionLibraryFunction)
-	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionButton_Canexecute()
-	 * @model
-	 * @generated
-	 */
-	FunctionLibraryFunction getCanexecute();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionButton#getCanexecute <em>Canexecute</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Canexecute</em>' reference.
-	 * @see #getCanexecute()
-	 * @generated
-	 */
-	void setCanexecute(FunctionLibraryFunction value);
-
-	/**
-	 * Returns the value of the '<em><b>Executeparameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Executeparameter</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Executeparameter</em>' reference.
-	 * @see #setExecuteparameter(FunctionLibraryFunction)
-	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionButton_Executeparameter()
-	 * @model
-	 * @generated
-	 */
-	FunctionLibraryFunction getExecuteparameter();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionButton#getExecuteparameter <em>Executeparameter</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Executeparameter</em>' reference.
-	 * @see #getExecuteparameter()
-	 * @generated
-	 */
-	void setExecuteparameter(FunctionLibraryFunction value);
-
-	/**
-	 * Returns the value of the '<em><b>Action Type</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Action Type</em>' containment reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Action Type</em>' containment reference.
-	 * @see #setActionType(ActionType)
-	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionButton_ActionType()
-	 * @model containment="true"
-	 * @generated
-	 */
-	ActionType getActionType();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionButton#getActionType <em>Action Type</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Action Type</em>' containment reference.
-	 * @see #getActionType()
-	 * @generated
-	 */
-	void setActionType(ActionType value);
-
-	/**
-	 * Returns the value of the '<em><b>Message</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Message</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Message</em>' reference.
-	 * @see #setMessage(MessageItem)
-	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionButton_Message()
-	 * @model
-	 * @generated
-	 */
-	MessageItem getMessage();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionButton#getMessage <em>Message</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Message</em>' reference.
-	 * @see #getMessage()
-	 * @generated
-	 */
-	void setMessage(MessageItem value);
+	void setCommand(ActionCommand value);
 
 } // ActionButton
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionChart.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionChart.java
index 463692a..9df4d47 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionChart.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionChart.java
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionChart#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionChart()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionCommand.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionCommand.java
new file mode 100644
index 0000000..3d709a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionCommand.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from ActionDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.action;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Action Command</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionCommand#getActionType <em>Action Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionCommand#isHasKeyBinding <em>Has Key Binding</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionCommand#getKeyBinding <em>Key Binding</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionCommand#isHasDescription <em>Has Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionCommand#getDescription <em>Description</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionCommand()
+ * @model
+ * @generated
+ */
+public interface ActionCommand extends ActionBase {
+	/**
+	 * Returns the value of the '<em><b>Action Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Action Type</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Action Type</em>' containment reference.
+	 * @see #setActionType(ActionType)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionCommand_ActionType()
+	 * @model containment="true"
+	 * @generated
+	 */
+	ActionType getActionType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionCommand#getActionType <em>Action Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Action Type</em>' containment reference.
+	 * @see #getActionType()
+	 * @generated
+	 */
+	void setActionType(ActionType value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Key Binding</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Key Binding</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has Key Binding</em>' attribute.
+	 * @see #setHasKeyBinding(boolean)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionCommand_HasKeyBinding()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasKeyBinding();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionCommand#isHasKeyBinding <em>Has Key Binding</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Key Binding</em>' attribute.
+	 * @see #isHasKeyBinding()
+	 * @generated
+	 */
+	void setHasKeyBinding(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Key Binding</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key Binding</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key Binding</em>' attribute.
+	 * @see #setKeyBinding(String)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionCommand_KeyBinding()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getKeyBinding();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionCommand#getKeyBinding <em>Key Binding</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key Binding</em>' attribute.
+	 * @see #getKeyBinding()
+	 * @generated
+	 */
+	void setKeyBinding(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Description</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has Description</em>' attribute.
+	 * @see #setHasDescription(boolean)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionCommand_HasDescription()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionCommand#isHasDescription <em>Has Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Description</em>' attribute.
+	 * @see #isHasDescription()
+	 * @generated
+	 */
+	void setHasDescription(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionCommand_Description()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionCommand#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+} // ActionCommand
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLFactory.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLFactory.java
index f61d44f..8a1d86b 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLFactory.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLFactory.java
@@ -70,6 +70,15 @@
 	ActionBase createActionBase();
 
 	/**
+	 * Returns a new object of class '<em>Action Command</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Action Command</em>'.
+	 * @generated
+	 */
+	ActionCommand createActionCommand();
+
+	/**
 	 * Returns a new object of class '<em>Action Toolbar</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -151,13 +160,22 @@
 	ActionDatainterchange createActionDatainterchange();
 
 	/**
-	 * Returns a new object of class '<em>Action Generic</em>'.
+	 * Returns a new object of class '<em>Action UI</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Action Generic</em>'.
+	 * @return a new object of class '<em>Action UI</em>'.
 	 * @generated
 	 */
-	ActionGeneric createActionGeneric();
+	ActionUI createActionUI();
+
+	/**
+	 * Returns a new object of class '<em>Action Function</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Action Function</em>'.
+	 * @generated
+	 */
+	ActionFunction createActionFunction();
 
 	/**
 	 * Returns a new object of class '<em>Action Parameter</em>'.
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLPackage.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLPackage.java
index a36678f..1eb1dee 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLPackage.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDSLPackage.java
@@ -38,7 +38,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.osbp.xtext.action.ActionDSLFactory
  * @model kind="package"
- *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='action' modelName='ActionDSL' prefix='ActionDSL' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials\r\n are made available under the terms of the Eclipse Public License v1.0\r\n which accompanies this distribution, and is available at\r\n http://www.eclipse.org/legal/epl-v10.html\r\n \r\n Contributors:                                                      \r\n    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\r\n \r\n generated from ActionDSL.xcore\r\n\r\n ' updateClasspath='false' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='action' modelName='ActionDSL' prefix='ActionDSL' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials\r\n are made available under the terms of the Eclipse Public License v1.0\r\n which accompanies this distribution, and is available at\r\n http://www.eclipse.org/legal/epl-v10.html\r\n \r\n Contributors:                                                      \r\n    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\r\n \r\n generated from ActionDSL.xcore\r\n\r\n ' updateClasspath='false' basePackage='org.eclipse.osbp.xtext'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='actiondsl'"
  * @generated
  */
@@ -86,13 +86,22 @@
 	int ACTION_MODEL = 0;
 
 	/**
+	 * The feature id for the '<em><b>Import Section</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_MODEL__IMPORT_SECTION = 0;
+
+	/**
 	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_MODEL__PACKAGES = 0;
+	int ACTION_MODEL__PACKAGES = 1;
 
 	/**
 	 * The number of structural features of the '<em>Action Model</em>' class.
@@ -101,7 +110,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_MODEL_FEATURE_COUNT = 1;
+	int ACTION_MODEL_FEATURE_COUNT = 2;
 
 	/**
 	 * The number of operations of the '<em>Action Model</em>' class.
@@ -169,13 +178,13 @@
 	int ACTION_PACKAGE__NAME = OSBPTypesPackage.LPACKAGE__NAME;
 
 	/**
-	 * The feature id for the '<em><b>Imports</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Commands</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_PACKAGE__IMPORTS = OSBPTypesPackage.LPACKAGE__IMPORTS;
+	int ACTION_PACKAGE__COMMANDS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Toolbars</b></em>' containment reference list.
@@ -184,7 +193,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_PACKAGE__TOOLBARS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 0;
+	int ACTION_PACKAGE__TOOLBARS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 1;
 
 	/**
 	 * The number of structural features of the '<em>Action Package</em>' class.
@@ -193,7 +202,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_PACKAGE_FEATURE_COUNT = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 1;
+	int ACTION_PACKAGE_FEATURE_COUNT = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 2;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -202,7 +211,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int ACTION_PACKAGE___ERESOLVE_PROXY__OBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Action Package</em>' class.
@@ -260,6 +269,97 @@
 	int ACTION_BASE_OPERATION_COUNT = ACTION_LAZY_RESOLVER_OPERATION_COUNT + 0;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.impl.ActionCommandImpl <em>Action Command</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.action.impl.ActionCommandImpl
+	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionCommand()
+	 * @generated
+	 */
+	int ACTION_COMMAND = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_COMMAND__NAME = ACTION_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Action Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_COMMAND__ACTION_TYPE = ACTION_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Has Key Binding</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_COMMAND__HAS_KEY_BINDING = ACTION_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Key Binding</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_COMMAND__KEY_BINDING = ACTION_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Has Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_COMMAND__HAS_DESCRIPTION = ACTION_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_COMMAND__DESCRIPTION = ACTION_BASE_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Action Command</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_COMMAND_FEATURE_COUNT = ACTION_BASE_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_COMMAND___ERESOLVE_PROXY__INTERNALEOBJECT = ACTION_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Action Command</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_COMMAND_OPERATION_COUNT = ACTION_BASE_OPERATION_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.impl.ActionToolbarImpl <em>Action Toolbar</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -267,7 +367,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionToolbar()
 	 * @generated
 	 */
-	int ACTION_TOOLBAR = 4;
+	int ACTION_TOOLBAR = 5;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -340,7 +440,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionButton()
 	 * @generated
 	 */
-	int ACTION_BUTTON = 5;
+	int ACTION_BUTTON = 6;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -379,49 +479,13 @@
 	int ACTION_BUTTON__ICON_URI = ACTION_BASE_FEATURE_COUNT + 2;
 
 	/**
-	 * The feature id for the '<em><b>Group</b></em>' reference.
+	 * The feature id for the '<em><b>Command</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_BUTTON__GROUP = ACTION_BASE_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Canexecute</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION_BUTTON__CANEXECUTE = ACTION_BASE_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Executeparameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION_BUTTON__EXECUTEPARAMETER = ACTION_BASE_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>Action Type</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION_BUTTON__ACTION_TYPE = ACTION_BASE_FEATURE_COUNT + 6;
-
-	/**
-	 * The feature id for the '<em><b>Message</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION_BUTTON__MESSAGE = ACTION_BASE_FEATURE_COUNT + 7;
+	int ACTION_BUTTON__COMMAND = ACTION_BASE_FEATURE_COUNT + 3;
 
 	/**
 	 * The number of structural features of the '<em>Action Button</em>' class.
@@ -430,7 +494,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_BUTTON_FEATURE_COUNT = ACTION_BASE_FEATURE_COUNT + 8;
+	int ACTION_BUTTON_FEATURE_COUNT = ACTION_BASE_FEATURE_COUNT + 4;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -458,7 +522,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionType()
 	 * @generated
 	 */
-	int ACTION_TYPE = 6;
+	int ACTION_TYPE = 7;
 
 	/**
 	 * The number of structural features of the '<em>Action Type</em>' class.
@@ -495,7 +559,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionTask()
 	 * @generated
 	 */
-	int ACTION_TASK = 7;
+	int ACTION_TASK = 8;
 
 	/**
 	 * The feature id for the '<em><b>Action</b></em>' attribute.
@@ -541,7 +605,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionSelectWorkload()
 	 * @generated
 	 */
-	int ACTION_SELECT_WORKLOAD = 8;
+	int ACTION_SELECT_WORKLOAD = 9;
 
 	/**
 	 * The feature id for the '<em><b>Action</b></em>' attribute.
@@ -587,7 +651,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionDialog()
 	 * @generated
 	 */
-	int ACTION_DIALOG = 9;
+	int ACTION_DIALOG = 10;
 
 	/**
 	 * The feature id for the '<em><b>Action</b></em>' attribute.
@@ -633,7 +697,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionReport()
 	 * @generated
 	 */
-	int ACTION_REPORT = 10;
+	int ACTION_REPORT = 11;
 
 	/**
 	 * The feature id for the '<em><b>Action</b></em>' attribute.
@@ -679,7 +743,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionChart()
 	 * @generated
 	 */
-	int ACTION_CHART = 11;
+	int ACTION_CHART = 12;
 
 	/**
 	 * The feature id for the '<em><b>Action</b></em>' attribute.
@@ -725,7 +789,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionWorkflow()
 	 * @generated
 	 */
-	int ACTION_WORKFLOW = 12;
+	int ACTION_WORKFLOW = 13;
 
 	/**
 	 * The feature id for the '<em><b>Action</b></em>' attribute.
@@ -771,7 +835,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionDatainterchange()
 	 * @generated
 	 */
-	int ACTION_DATAINTERCHANGE = 13;
+	int ACTION_DATAINTERCHANGE = 14;
 
 	/**
 	 * The feature id for the '<em><b>Action</b></em>' attribute.
@@ -819,14 +883,14 @@
 	int ACTION_DATAINTERCHANGE_OPERATION_COUNT = ACTION_TYPE_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.impl.ActionGenericImpl <em>Action Generic</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.impl.ActionUIImpl <em>Action UI</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.action.impl.ActionGenericImpl
-	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionGeneric()
+	 * @see org.eclipse.osbp.xtext.action.impl.ActionUIImpl
+	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionUI()
 	 * @generated
 	 */
-	int ACTION_GENERIC = 14;
+	int ACTION_UI = 15;
 
 	/**
 	 * The feature id for the '<em><b>Action</b></em>' attribute.
@@ -835,16 +899,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_GENERIC__ACTION = ACTION_TYPE_FEATURE_COUNT + 0;
+	int ACTION_UI__ACTION = ACTION_TYPE_FEATURE_COUNT + 0;
 
 	/**
-	 * The number of structural features of the '<em>Action Generic</em>' class.
+	 * The number of structural features of the '<em>Action UI</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_GENERIC_FEATURE_COUNT = ACTION_TYPE_FEATURE_COUNT + 1;
+	int ACTION_UI_FEATURE_COUNT = ACTION_TYPE_FEATURE_COUNT + 1;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -853,16 +917,170 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_GENERIC___ERESOLVE_PROXY__INTERNALEOBJECT = ACTION_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int ACTION_UI___ERESOLVE_PROXY__INTERNALEOBJECT = ACTION_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
-	 * The number of operations of the '<em>Action Generic</em>' class.
+	 * The number of operations of the '<em>Action UI</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_GENERIC_OPERATION_COUNT = ACTION_TYPE_OPERATION_COUNT + 0;
+	int ACTION_UI_OPERATION_COUNT = ACTION_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl <em>Action Function</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl
+	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionFunction()
+	 * @generated
+	 */
+	int ACTION_FUNCTION = 16;
+
+	/**
+	 * The feature id for the '<em><b>Action Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__ACTION_GROUP = ACTION_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Can Execute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__CAN_EXECUTE = ACTION_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Has Execute Immediate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__HAS_EXECUTE_IMMEDIATE = ACTION_TYPE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Has Execute Later</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__HAS_EXECUTE_LATER = ACTION_TYPE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Execute Immediate</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__EXECUTE_IMMEDIATE = ACTION_TYPE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Execute Later</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__EXECUTE_LATER = ACTION_TYPE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Has Message</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__HAS_MESSAGE = ACTION_TYPE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Message Category</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__MESSAGE_CATEGORY = ACTION_TYPE_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>On Fail Message</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__ON_FAIL_MESSAGE = ACTION_TYPE_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Has Success Message</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__HAS_SUCCESS_MESSAGE = ACTION_TYPE_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>On Success Message</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__ON_SUCCESS_MESSAGE = ACTION_TYPE_FEATURE_COUNT + 10;
+
+	/**
+	 * The feature id for the '<em><b>Has Started Message</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__HAS_STARTED_MESSAGE = ACTION_TYPE_FEATURE_COUNT + 11;
+
+	/**
+	 * The feature id for the '<em><b>On Started Message</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION__ON_STARTED_MESSAGE = ACTION_TYPE_FEATURE_COUNT + 12;
+
+	/**
+	 * The number of structural features of the '<em>Action Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION_FEATURE_COUNT = ACTION_TYPE_FEATURE_COUNT + 13;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION___ERESOLVE_PROXY__INTERNALEOBJECT = ACTION_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Action Function</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_FUNCTION_OPERATION_COUNT = ACTION_TYPE_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.impl.ActionParameterImpl <em>Action Parameter</em>}' class.
@@ -872,7 +1090,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionParameter()
 	 * @generated
 	 */
-	int ACTION_PARAMETER = 15;
+	int ACTION_PARAMETER = 17;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -927,7 +1145,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getTaskActionEnum()
 	 * @generated
 	 */
-	int TASK_ACTION_ENUM = 16;
+	int TASK_ACTION_ENUM = 18;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.SelectWorkloadActionEnum <em>Select Workload Action Enum</em>}' enum.
@@ -937,7 +1155,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getSelectWorkloadActionEnum()
 	 * @generated
 	 */
-	int SELECT_WORKLOAD_ACTION_ENUM = 17;
+	int SELECT_WORKLOAD_ACTION_ENUM = 19;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.DialogActionEnum <em>Dialog Action Enum</em>}' enum.
@@ -947,7 +1165,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getDialogActionEnum()
 	 * @generated
 	 */
-	int DIALOG_ACTION_ENUM = 18;
+	int DIALOG_ACTION_ENUM = 20;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.ReportActionEnum <em>Report Action Enum</em>}' enum.
@@ -957,7 +1175,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getReportActionEnum()
 	 * @generated
 	 */
-	int REPORT_ACTION_ENUM = 19;
+	int REPORT_ACTION_ENUM = 21;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.ChartActionEnum <em>Chart Action Enum</em>}' enum.
@@ -967,7 +1185,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getChartActionEnum()
 	 * @generated
 	 */
-	int CHART_ACTION_ENUM = 20;
+	int CHART_ACTION_ENUM = 22;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.WorkflowActionEnum <em>Workflow Action Enum</em>}' enum.
@@ -977,7 +1195,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getWorkflowActionEnum()
 	 * @generated
 	 */
-	int WORKFLOW_ACTION_ENUM = 21;
+	int WORKFLOW_ACTION_ENUM = 23;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.DatainterchangeActionEnum <em>Datainterchange Action Enum</em>}' enum.
@@ -987,7 +1205,17 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getDatainterchangeActionEnum()
 	 * @generated
 	 */
-	int DATAINTERCHANGE_ACTION_ENUM = 22;
+	int DATAINTERCHANGE_ACTION_ENUM = 24;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.action.UIActionEnum <em>UI Action Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.action.UIActionEnum
+	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getUIActionEnum()
+	 * @generated
+	 */
+	int UI_ACTION_ENUM = 25;
 
 	/**
 	 * The meta object id for the '<em>Internal EObject</em>' data type.
@@ -997,7 +1225,7 @@
 	 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getInternalEObject()
 	 * @generated
 	 */
-	int INTERNAL_EOBJECT = 23;
+	int INTERNAL_EOBJECT = 26;
 
 
 	/**
@@ -1011,6 +1239,17 @@
 	EClass getActionModel();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.action.ActionModel#getImportSection <em>Import Section</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Import Section</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionModel#getImportSection()
+	 * @see #getActionModel()
+	 * @generated
+	 */
+	EReference getActionModel_ImportSection();
+
+	/**
 	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.action.ActionModel#getPackages <em>Packages</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1052,6 +1291,17 @@
 	EClass getActionPackage();
 
 	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.action.ActionPackage#getCommands <em>Commands</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Commands</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionPackage#getCommands()
+	 * @see #getActionPackage()
+	 * @generated
+	 */
+	EReference getActionPackage_Commands();
+
+	/**
 	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.action.ActionPackage#getToolbars <em>Toolbars</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1084,6 +1334,71 @@
 	EAttribute getActionBase_Name();
 
 	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.action.ActionCommand <em>Action Command</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Action Command</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionCommand
+	 * @generated
+	 */
+	EClass getActionCommand();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.action.ActionCommand#getActionType <em>Action Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Action Type</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionCommand#getActionType()
+	 * @see #getActionCommand()
+	 * @generated
+	 */
+	EReference getActionCommand_ActionType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionCommand#isHasKeyBinding <em>Has Key Binding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Key Binding</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionCommand#isHasKeyBinding()
+	 * @see #getActionCommand()
+	 * @generated
+	 */
+	EAttribute getActionCommand_HasKeyBinding();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionCommand#getKeyBinding <em>Key Binding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key Binding</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionCommand#getKeyBinding()
+	 * @see #getActionCommand()
+	 * @generated
+	 */
+	EAttribute getActionCommand_KeyBinding();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionCommand#isHasDescription <em>Has Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Description</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionCommand#isHasDescription()
+	 * @see #getActionCommand()
+	 * @generated
+	 */
+	EAttribute getActionCommand_HasDescription();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionCommand#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionCommand#getDescription()
+	 * @see #getActionCommand()
+	 * @generated
+	 */
+	EAttribute getActionCommand_Description();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.action.ActionToolbar <em>Action Toolbar</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1170,59 +1485,15 @@
 	EAttribute getActionButton_IconURI();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionButton#getGroup <em>Group</em>}'.
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionButton#getCommand <em>Command</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Group</em>'.
-	 * @see org.eclipse.osbp.xtext.action.ActionButton#getGroup()
+	 * @return the meta object for the reference '<em>Command</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionButton#getCommand()
 	 * @see #getActionButton()
 	 * @generated
 	 */
-	EReference getActionButton_Group();
-
-	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionButton#getCanexecute <em>Canexecute</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Canexecute</em>'.
-	 * @see org.eclipse.osbp.xtext.action.ActionButton#getCanexecute()
-	 * @see #getActionButton()
-	 * @generated
-	 */
-	EReference getActionButton_Canexecute();
-
-	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionButton#getExecuteparameter <em>Executeparameter</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Executeparameter</em>'.
-	 * @see org.eclipse.osbp.xtext.action.ActionButton#getExecuteparameter()
-	 * @see #getActionButton()
-	 * @generated
-	 */
-	EReference getActionButton_Executeparameter();
-
-	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.action.ActionButton#getActionType <em>Action Type</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Action Type</em>'.
-	 * @see org.eclipse.osbp.xtext.action.ActionButton#getActionType()
-	 * @see #getActionButton()
-	 * @generated
-	 */
-	EReference getActionButton_ActionType();
-
-	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionButton#getMessage <em>Message</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Message</em>'.
-	 * @see org.eclipse.osbp.xtext.action.ActionButton#getMessage()
-	 * @see #getActionButton()
-	 * @generated
-	 */
-	EReference getActionButton_Message();
+	EReference getActionButton_Command();
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.action.ActionType <em>Action Type</em>}'.
@@ -1393,25 +1664,178 @@
 	EReference getActionDatainterchange_DataRef();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.action.ActionGeneric <em>Action Generic</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.action.ActionUI <em>Action UI</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Action Generic</em>'.
-	 * @see org.eclipse.osbp.xtext.action.ActionGeneric
+	 * @return the meta object for class '<em>Action UI</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionUI
 	 * @generated
 	 */
-	EClass getActionGeneric();
+	EClass getActionUI();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionGeneric#getAction <em>Action</em>}'.
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionUI#getAction <em>Action</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @return the meta object for the attribute '<em>Action</em>'.
-	 * @see org.eclipse.osbp.xtext.action.ActionGeneric#getAction()
-	 * @see #getActionGeneric()
+	 * @see org.eclipse.osbp.xtext.action.ActionUI#getAction()
+	 * @see #getActionUI()
 	 * @generated
 	 */
-	EAttribute getActionGeneric_Action();
+	EAttribute getActionUI_Action();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.action.ActionFunction <em>Action Function</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Action Function</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction
+	 * @generated
+	 */
+	EClass getActionFunction();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionFunction#getActionGroup <em>Action Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Action Group</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#getActionGroup()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EReference getActionFunction_ActionGroup();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionFunction#getCanExecute <em>Can Execute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Can Execute</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#getCanExecute()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EReference getActionFunction_CanExecute();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasExecuteImmediate <em>Has Execute Immediate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Execute Immediate</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#isHasExecuteImmediate()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EAttribute getActionFunction_HasExecuteImmediate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasExecuteLater <em>Has Execute Later</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Execute Later</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#isHasExecuteLater()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EAttribute getActionFunction_HasExecuteLater();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionFunction#getExecuteImmediate <em>Execute Immediate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Execute Immediate</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#getExecuteImmediate()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EReference getActionFunction_ExecuteImmediate();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionFunction#getExecuteLater <em>Execute Later</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Execute Later</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#getExecuteLater()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EReference getActionFunction_ExecuteLater();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasMessage <em>Has Message</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Message</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#isHasMessage()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EAttribute getActionFunction_HasMessage();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionFunction#getMessageCategory <em>Message Category</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Message Category</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#getMessageCategory()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EReference getActionFunction_MessageCategory();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionFunction#getOnFailMessage <em>On Fail Message</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>On Fail Message</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#getOnFailMessage()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EReference getActionFunction_OnFailMessage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasSuccessMessage <em>Has Success Message</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Success Message</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#isHasSuccessMessage()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EAttribute getActionFunction_HasSuccessMessage();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionFunction#getOnSuccessMessage <em>On Success Message</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>On Success Message</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#getOnSuccessMessage()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EReference getActionFunction_OnSuccessMessage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasStartedMessage <em>Has Started Message</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has Started Message</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#isHasStartedMessage()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EAttribute getActionFunction_HasStartedMessage();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.action.ActionFunction#getOnStartedMessage <em>On Started Message</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>On Started Message</em>'.
+	 * @see org.eclipse.osbp.xtext.action.ActionFunction#getOnStartedMessage()
+	 * @see #getActionFunction()
+	 * @generated
+	 */
+	EReference getActionFunction_OnStartedMessage();
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.action.ActionParameter <em>Action Parameter</em>}'.
@@ -1505,6 +1929,16 @@
 	EEnum getDatainterchangeActionEnum();
 
 	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.action.UIActionEnum <em>UI Action Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>UI Action Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.action.UIActionEnum
+	 * @generated
+	 */
+	EEnum getUIActionEnum();
+
+	/**
 	 * Returns the meta object for data type '{@link org.eclipse.emf.ecore.InternalEObject <em>Internal EObject</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1549,6 +1983,14 @@
 		EClass ACTION_MODEL = eINSTANCE.getActionModel();
 
 		/**
+		 * The meta object literal for the '<em><b>Import Section</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_MODEL__IMPORT_SECTION = eINSTANCE.getActionModel_ImportSection();
+
+		/**
 		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1585,6 +2027,14 @@
 		EClass ACTION_PACKAGE = eINSTANCE.getActionPackage();
 
 		/**
+		 * The meta object literal for the '<em><b>Commands</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_PACKAGE__COMMANDS = eINSTANCE.getActionPackage_Commands();
+
+		/**
 		 * The meta object literal for the '<em><b>Toolbars</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1611,6 +2061,56 @@
 		EAttribute ACTION_BASE__NAME = eINSTANCE.getActionBase_Name();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.action.impl.ActionCommandImpl <em>Action Command</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.action.impl.ActionCommandImpl
+		 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionCommand()
+		 * @generated
+		 */
+		EClass ACTION_COMMAND = eINSTANCE.getActionCommand();
+
+		/**
+		 * The meta object literal for the '<em><b>Action Type</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_COMMAND__ACTION_TYPE = eINSTANCE.getActionCommand_ActionType();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Key Binding</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTION_COMMAND__HAS_KEY_BINDING = eINSTANCE.getActionCommand_HasKeyBinding();
+
+		/**
+		 * The meta object literal for the '<em><b>Key Binding</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTION_COMMAND__KEY_BINDING = eINSTANCE.getActionCommand_KeyBinding();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTION_COMMAND__HAS_DESCRIPTION = eINSTANCE.getActionCommand_HasDescription();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTION_COMMAND__DESCRIPTION = eINSTANCE.getActionCommand_Description();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.action.impl.ActionToolbarImpl <em>Action Toolbar</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1679,44 +2179,12 @@
 		EAttribute ACTION_BUTTON__ICON_URI = eINSTANCE.getActionButton_IconURI();
 
 		/**
-		 * The meta object literal for the '<em><b>Group</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Command</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference ACTION_BUTTON__GROUP = eINSTANCE.getActionButton_Group();
-
-		/**
-		 * The meta object literal for the '<em><b>Canexecute</b></em>' reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference ACTION_BUTTON__CANEXECUTE = eINSTANCE.getActionButton_Canexecute();
-
-		/**
-		 * The meta object literal for the '<em><b>Executeparameter</b></em>' reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference ACTION_BUTTON__EXECUTEPARAMETER = eINSTANCE.getActionButton_Executeparameter();
-
-		/**
-		 * The meta object literal for the '<em><b>Action Type</b></em>' containment reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference ACTION_BUTTON__ACTION_TYPE = eINSTANCE.getActionButton_ActionType();
-
-		/**
-		 * The meta object literal for the '<em><b>Message</b></em>' reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference ACTION_BUTTON__MESSAGE = eINSTANCE.getActionButton_Message();
+		EReference ACTION_BUTTON__COMMAND = eINSTANCE.getActionButton_Command();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.action.ActionType <em>Action Type</em>}' class.
@@ -1863,14 +2331,14 @@
 		EReference ACTION_DATAINTERCHANGE__DATA_REF = eINSTANCE.getActionDatainterchange_DataRef();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.action.impl.ActionGenericImpl <em>Action Generic</em>}' class.
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.action.impl.ActionUIImpl <em>Action UI</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.action.impl.ActionGenericImpl
-		 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionGeneric()
+		 * @see org.eclipse.osbp.xtext.action.impl.ActionUIImpl
+		 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionUI()
 		 * @generated
 		 */
-		EClass ACTION_GENERIC = eINSTANCE.getActionGeneric();
+		EClass ACTION_UI = eINSTANCE.getActionUI();
 
 		/**
 		 * The meta object literal for the '<em><b>Action</b></em>' attribute feature.
@@ -1878,7 +2346,121 @@
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute ACTION_GENERIC__ACTION = eINSTANCE.getActionGeneric_Action();
+		EAttribute ACTION_UI__ACTION = eINSTANCE.getActionUI_Action();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl <em>Action Function</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl
+		 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getActionFunction()
+		 * @generated
+		 */
+		EClass ACTION_FUNCTION = eINSTANCE.getActionFunction();
+
+		/**
+		 * The meta object literal for the '<em><b>Action Group</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_FUNCTION__ACTION_GROUP = eINSTANCE.getActionFunction_ActionGroup();
+
+		/**
+		 * The meta object literal for the '<em><b>Can Execute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_FUNCTION__CAN_EXECUTE = eINSTANCE.getActionFunction_CanExecute();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Execute Immediate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTION_FUNCTION__HAS_EXECUTE_IMMEDIATE = eINSTANCE.getActionFunction_HasExecuteImmediate();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Execute Later</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTION_FUNCTION__HAS_EXECUTE_LATER = eINSTANCE.getActionFunction_HasExecuteLater();
+
+		/**
+		 * The meta object literal for the '<em><b>Execute Immediate</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_FUNCTION__EXECUTE_IMMEDIATE = eINSTANCE.getActionFunction_ExecuteImmediate();
+
+		/**
+		 * The meta object literal for the '<em><b>Execute Later</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_FUNCTION__EXECUTE_LATER = eINSTANCE.getActionFunction_ExecuteLater();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Message</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTION_FUNCTION__HAS_MESSAGE = eINSTANCE.getActionFunction_HasMessage();
+
+		/**
+		 * The meta object literal for the '<em><b>Message Category</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_FUNCTION__MESSAGE_CATEGORY = eINSTANCE.getActionFunction_MessageCategory();
+
+		/**
+		 * The meta object literal for the '<em><b>On Fail Message</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_FUNCTION__ON_FAIL_MESSAGE = eINSTANCE.getActionFunction_OnFailMessage();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Success Message</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTION_FUNCTION__HAS_SUCCESS_MESSAGE = eINSTANCE.getActionFunction_HasSuccessMessage();
+
+		/**
+		 * The meta object literal for the '<em><b>On Success Message</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_FUNCTION__ON_SUCCESS_MESSAGE = eINSTANCE.getActionFunction_OnSuccessMessage();
+
+		/**
+		 * The meta object literal for the '<em><b>Has Started Message</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ACTION_FUNCTION__HAS_STARTED_MESSAGE = eINSTANCE.getActionFunction_HasStartedMessage();
+
+		/**
+		 * The meta object literal for the '<em><b>On Started Message</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_FUNCTION__ON_STARTED_MESSAGE = eINSTANCE.getActionFunction_OnStartedMessage();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.action.impl.ActionParameterImpl <em>Action Parameter</em>}' class.
@@ -1969,6 +2551,16 @@
 		EEnum DATAINTERCHANGE_ACTION_ENUM = eINSTANCE.getDatainterchangeActionEnum();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.action.UIActionEnum <em>UI Action Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.action.UIActionEnum
+		 * @see org.eclipse.osbp.xtext.action.impl.ActionDSLPackageImpl#getUIActionEnum()
+		 * @generated
+		 */
+		EEnum UI_ACTION_ENUM = eINSTANCE.getUIActionEnum();
+
+		/**
 		 * The meta object literal for the '<em>Internal EObject</em>' data type.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDatainterchange.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDatainterchange.java
index a36785c..ea63c39 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDatainterchange.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDatainterchange.java
@@ -23,11 +23,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionDatainterchange#getAction <em>Action</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionDatainterchange#getDataRef <em>Data Ref</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionDatainterchange()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDialog.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDialog.java
index 0d3d30c..835a998 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDialog.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionDialog.java
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionDialog#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionDialog()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionFunction.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionFunction.java
new file mode 100644
index 0000000..31020c9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionFunction.java
@@ -0,0 +1,391 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from ActionDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.action;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryActionGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryCanExecute;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryExecute;
+
+import org.eclipse.osbp.xtext.messagedsl.MessageCategory;
+import org.eclipse.osbp.xtext.messagedsl.MessageItem;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Action Function</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#getActionGroup <em>Action Group</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#getCanExecute <em>Can Execute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasExecuteImmediate <em>Has Execute Immediate</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasExecuteLater <em>Has Execute Later</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#getExecuteImmediate <em>Execute Immediate</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#getExecuteLater <em>Execute Later</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasMessage <em>Has Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#getMessageCategory <em>Message Category</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#getOnFailMessage <em>On Fail Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasSuccessMessage <em>Has Success Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#getOnSuccessMessage <em>On Success Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasStartedMessage <em>Has Started Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionFunction#getOnStartedMessage <em>On Started Message</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction()
+ * @model
+ * @generated
+ */
+public interface ActionFunction extends ActionType {
+	/**
+	 * Returns the value of the '<em><b>Action Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Action Group</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Action Group</em>' reference.
+	 * @see #setActionGroup(FunctionLibraryActionGroup)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_ActionGroup()
+	 * @model
+	 * @generated
+	 */
+	FunctionLibraryActionGroup getActionGroup();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#getActionGroup <em>Action Group</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Action Group</em>' reference.
+	 * @see #getActionGroup()
+	 * @generated
+	 */
+	void setActionGroup(FunctionLibraryActionGroup value);
+
+	/**
+	 * Returns the value of the '<em><b>Can Execute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Can Execute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Can Execute</em>' reference.
+	 * @see #setCanExecute(FunctionLibraryCanExecute)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_CanExecute()
+	 * @model
+	 * @generated
+	 */
+	FunctionLibraryCanExecute getCanExecute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#getCanExecute <em>Can Execute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Can Execute</em>' reference.
+	 * @see #getCanExecute()
+	 * @generated
+	 */
+	void setCanExecute(FunctionLibraryCanExecute value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Execute Immediate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Execute Immediate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has Execute Immediate</em>' attribute.
+	 * @see #setHasExecuteImmediate(boolean)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_HasExecuteImmediate()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasExecuteImmediate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasExecuteImmediate <em>Has Execute Immediate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Execute Immediate</em>' attribute.
+	 * @see #isHasExecuteImmediate()
+	 * @generated
+	 */
+	void setHasExecuteImmediate(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Execute Later</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Execute Later</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has Execute Later</em>' attribute.
+	 * @see #setHasExecuteLater(boolean)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_HasExecuteLater()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasExecuteLater();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasExecuteLater <em>Has Execute Later</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Execute Later</em>' attribute.
+	 * @see #isHasExecuteLater()
+	 * @generated
+	 */
+	void setHasExecuteLater(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Execute Immediate</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Execute Immediate</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Execute Immediate</em>' reference.
+	 * @see #setExecuteImmediate(FunctionLibraryExecute)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_ExecuteImmediate()
+	 * @model
+	 * @generated
+	 */
+	FunctionLibraryExecute getExecuteImmediate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#getExecuteImmediate <em>Execute Immediate</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Execute Immediate</em>' reference.
+	 * @see #getExecuteImmediate()
+	 * @generated
+	 */
+	void setExecuteImmediate(FunctionLibraryExecute value);
+
+	/**
+	 * Returns the value of the '<em><b>Execute Later</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Execute Later</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Execute Later</em>' reference.
+	 * @see #setExecuteLater(FunctionLibraryExecute)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_ExecuteLater()
+	 * @model
+	 * @generated
+	 */
+	FunctionLibraryExecute getExecuteLater();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#getExecuteLater <em>Execute Later</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Execute Later</em>' reference.
+	 * @see #getExecuteLater()
+	 * @generated
+	 */
+	void setExecuteLater(FunctionLibraryExecute value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Message</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Message</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has Message</em>' attribute.
+	 * @see #setHasMessage(boolean)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_HasMessage()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasMessage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasMessage <em>Has Message</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Message</em>' attribute.
+	 * @see #isHasMessage()
+	 * @generated
+	 */
+	void setHasMessage(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Message Category</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Message Category</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Message Category</em>' reference.
+	 * @see #setMessageCategory(MessageCategory)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_MessageCategory()
+	 * @model
+	 * @generated
+	 */
+	MessageCategory getMessageCategory();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#getMessageCategory <em>Message Category</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Message Category</em>' reference.
+	 * @see #getMessageCategory()
+	 * @generated
+	 */
+	void setMessageCategory(MessageCategory value);
+
+	/**
+	 * Returns the value of the '<em><b>On Fail Message</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>On Fail Message</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>On Fail Message</em>' reference.
+	 * @see #setOnFailMessage(MessageItem)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_OnFailMessage()
+	 * @model
+	 * @generated
+	 */
+	MessageItem getOnFailMessage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#getOnFailMessage <em>On Fail Message</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>On Fail Message</em>' reference.
+	 * @see #getOnFailMessage()
+	 * @generated
+	 */
+	void setOnFailMessage(MessageItem value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Success Message</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Success Message</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has Success Message</em>' attribute.
+	 * @see #setHasSuccessMessage(boolean)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_HasSuccessMessage()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasSuccessMessage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasSuccessMessage <em>Has Success Message</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Success Message</em>' attribute.
+	 * @see #isHasSuccessMessage()
+	 * @generated
+	 */
+	void setHasSuccessMessage(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>On Success Message</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>On Success Message</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>On Success Message</em>' reference.
+	 * @see #setOnSuccessMessage(MessageItem)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_OnSuccessMessage()
+	 * @model
+	 * @generated
+	 */
+	MessageItem getOnSuccessMessage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#getOnSuccessMessage <em>On Success Message</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>On Success Message</em>' reference.
+	 * @see #getOnSuccessMessage()
+	 * @generated
+	 */
+	void setOnSuccessMessage(MessageItem value);
+
+	/**
+	 * Returns the value of the '<em><b>Has Started Message</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has Started Message</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has Started Message</em>' attribute.
+	 * @see #setHasStartedMessage(boolean)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_HasStartedMessage()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasStartedMessage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#isHasStartedMessage <em>Has Started Message</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has Started Message</em>' attribute.
+	 * @see #isHasStartedMessage()
+	 * @generated
+	 */
+	void setHasStartedMessage(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>On Started Message</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>On Started Message</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>On Started Message</em>' reference.
+	 * @see #setOnStartedMessage(MessageItem)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionFunction_OnStartedMessage()
+	 * @model
+	 * @generated
+	 */
+	MessageItem getOnStartedMessage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionFunction#getOnStartedMessage <em>On Started Message</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>On Started Message</em>' reference.
+	 * @see #getOnStartedMessage()
+	 * @generated
+	 */
+	void setOnStartedMessage(MessageItem value);
+
+} // ActionFunction
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionLazyResolver.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionLazyResolver.java
index 3cd5ba8..cdcef04 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionLazyResolver.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionLazyResolver.java
@@ -32,7 +32,7 @@
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @model unique="false" proxyDataType="org.eclipse.osbp.xtext.action.InternalEObject" proxyUnique="false"
-	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='<%org.eclipse.emf.ecore.resource.Resource%> _eResource = this.eResource();\n<%org.eclipse.emf.ecore.resource.ResourceSet%> _resourceSet = _eResource.getResourceSet();\nreturn <%org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3%>.resolve(proxy, _resourceSet);'"
+	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='return <%org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3%>.resolve(proxy, this.eResource().getResourceSet());'"
 	 * @generated
 	 */
 	EObject eResolveProxy(InternalEObject proxy);
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionModel.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionModel.java
index 1ec952f..92d5d70 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionModel.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionModel.java
@@ -18,6 +18,8 @@
 
 import org.eclipse.emf.ecore.EObject;
 
+import org.eclipse.xtext.xtype.XImportSection;
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Action Model</b></em>'.
@@ -25,10 +27,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionModel#getImportSection <em>Import Section</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionModel#getPackages <em>Packages</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionModel()
  * @model
@@ -36,6 +39,32 @@
  */
 public interface ActionModel extends EObject {
 	/**
+	 * Returns the value of the '<em><b>Import Section</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Import Section</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Import Section</em>' containment reference.
+	 * @see #setImportSection(XImportSection)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionModel_ImportSection()
+	 * @model containment="true"
+	 * @generated
+	 */
+	XImportSection getImportSection();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionModel#getImportSection <em>Import Section</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Import Section</em>' containment reference.
+	 * @see #getImportSection()
+	 * @generated
+	 */
+	void setImportSection(XImportSection value);
+
+	/**
 	 * Returns the value of the '<em><b>Packages</b></em>' containment reference list.
 	 * The list contents are of type {@link org.eclipse.osbp.xtext.action.ActionPackage}.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionPackage.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionPackage.java
index 49ca726..7043f67 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionPackage.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionPackage.java
@@ -25,10 +25,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionPackage#getCommands <em>Commands</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionPackage#getToolbars <em>Toolbars</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionPackage()
  * @model
@@ -36,6 +37,22 @@
  */
 public interface ActionPackage extends LPackage {
 	/**
+	 * Returns the value of the '<em><b>Commands</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.action.ActionCommand}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Commands</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Commands</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionPackage_Commands()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<ActionCommand> getCommands();
+
+	/**
 	 * Returns the value of the '<em><b>Toolbars</b></em>' containment reference list.
 	 * The list contents are of type {@link org.eclipse.osbp.xtext.action.ActionToolbar}.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionParameter.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionParameter.java
index 3432f59..b92a6a1 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionParameter.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionParameter.java
@@ -23,10 +23,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionParameter#getParameter <em>Parameter</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionParameter()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionReport.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionReport.java
index c6b3829..854abb2 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionReport.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionReport.java
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionReport#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionReport()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionSelectWorkload.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionSelectWorkload.java
index 112e570..fbc151c 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionSelectWorkload.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionSelectWorkload.java
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionSelectWorkload#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionSelectWorkload()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionTask.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionTask.java
index 7741ab2..b5b1907 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionTask.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionTask.java
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionTask#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionTask()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionToolbar.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionToolbar.java
index a64eef9..d617fde 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionToolbar.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionToolbar.java
@@ -23,12 +23,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionToolbar#isDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionToolbar#getDescriptionValue <em>Description Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionToolbar#getActions <em>Actions</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionToolbar()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionUI.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionUI.java
new file mode 100644
index 0000000..6a8323a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionUI.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from ActionDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.action;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Action UI</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.ActionUI#getAction <em>Action</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionUI()
+ * @model
+ * @generated
+ */
+public interface ActionUI extends ActionType {
+	/**
+	 * Returns the value of the '<em><b>Action</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.action.UIActionEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Action</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Action</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.action.UIActionEnum
+	 * @see #setAction(UIActionEnum)
+	 * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionUI_Action()
+	 * @model unique="false"
+	 * @generated
+	 */
+	UIActionEnum getAction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.action.ActionUI#getAction <em>Action</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Action</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.action.UIActionEnum
+	 * @see #getAction()
+	 * @generated
+	 */
+	void setAction(UIActionEnum value);
+
+} // ActionUI
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionWorkflow.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionWorkflow.java
index c6bfb90..95e9c7a 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionWorkflow.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ActionWorkflow.java
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.ActionWorkflow#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getActionWorkflow()
  * @model
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ChartActionEnum.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ChartActionEnum.java
index 2651b62..6e43672 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ChartActionEnum.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ChartActionEnum.java
@@ -78,6 +78,8 @@
 	 * Returns the '<em><b>Chart Action Enum</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static ChartActionEnum get(String literal) {
@@ -94,6 +96,8 @@
 	 * Returns the '<em><b>Chart Action Enum</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static ChartActionEnum getByName(String name) {
@@ -110,6 +114,8 @@
 	 * Returns the '<em><b>Chart Action Enum</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static ChartActionEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/DatainterchangeActionEnum.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/DatainterchangeActionEnum.java
index 8683f19..cd93c34 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/DatainterchangeActionEnum.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/DatainterchangeActionEnum.java
@@ -104,6 +104,8 @@
 	 * Returns the '<em><b>Datainterchange Action Enum</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static DatainterchangeActionEnum get(String literal) {
@@ -120,6 +122,8 @@
 	 * Returns the '<em><b>Datainterchange Action Enum</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static DatainterchangeActionEnum getByName(String name) {
@@ -136,6 +140,8 @@
 	 * Returns the '<em><b>Datainterchange Action Enum</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static DatainterchangeActionEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/DialogActionEnum.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/DialogActionEnum.java
index 1ef15fc..88f033f 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/DialogActionEnum.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/DialogActionEnum.java
@@ -156,6 +156,8 @@
 	 * Returns the '<em><b>Dialog Action Enum</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static DialogActionEnum get(String literal) {
@@ -172,6 +174,8 @@
 	 * Returns the '<em><b>Dialog Action Enum</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static DialogActionEnum getByName(String name) {
@@ -188,6 +192,8 @@
 	 * Returns the '<em><b>Dialog Action Enum</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static DialogActionEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ReportActionEnum.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ReportActionEnum.java
index af3f54a..8d3feb0 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ReportActionEnum.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/ReportActionEnum.java
@@ -104,6 +104,8 @@
 	 * Returns the '<em><b>Report Action Enum</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static ReportActionEnum get(String literal) {
@@ -120,6 +122,8 @@
 	 * Returns the '<em><b>Report Action Enum</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static ReportActionEnum getByName(String name) {
@@ -136,6 +140,8 @@
 	 * Returns the '<em><b>Report Action Enum</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static ReportActionEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/SelectWorkloadActionEnum.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/SelectWorkloadActionEnum.java
index ec8fa0e..22a2e03 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/SelectWorkloadActionEnum.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/SelectWorkloadActionEnum.java
@@ -104,6 +104,8 @@
 	 * Returns the '<em><b>Select Workload Action Enum</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static SelectWorkloadActionEnum get(String literal) {
@@ -120,6 +122,8 @@
 	 * Returns the '<em><b>Select Workload Action Enum</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static SelectWorkloadActionEnum getByName(String name) {
@@ -136,6 +140,8 @@
 	 * Returns the '<em><b>Select Workload Action Enum</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static SelectWorkloadActionEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/TaskActionEnum.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/TaskActionEnum.java
index 1612138..25a75cc 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/TaskActionEnum.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/TaskActionEnum.java
@@ -442,6 +442,8 @@
 	 * Returns the '<em><b>Task Action Enum</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static TaskActionEnum get(String literal) {
@@ -458,6 +460,8 @@
 	 * Returns the '<em><b>Task Action Enum</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static TaskActionEnum getByName(String name) {
@@ -474,6 +478,8 @@
 	 * Returns the '<em><b>Task Action Enum</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static TaskActionEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/UIActionEnum.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/UIActionEnum.java
new file mode 100644
index 0000000..7c5f945
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/UIActionEnum.java
@@ -0,0 +1,225 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from ActionDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.action;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>UI Action Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.action.ActionDSLPackage#getUIActionEnum()
+ * @model
+ * @generated
+ */
+public enum UIActionEnum implements Enumerator {
+	/**
+	 * The '<em><b>NEXT PART</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NEXT_PART_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NEXT_PART(0, "NEXT_PART", "NextPart"),
+
+	/**
+	 * The '<em><b>PREVIOUS PART</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PREVIOUS_PART_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PREVIOUS_PART(0, "PREVIOUS_PART", "PreviousPart");
+
+	/**
+	 * The '<em><b>NEXT PART</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NEXT PART</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NEXT_PART
+	 * @model literal="NextPart"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NEXT_PART_VALUE = 0;
+
+	/**
+	 * The '<em><b>PREVIOUS PART</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PREVIOUS PART</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PREVIOUS_PART
+	 * @model literal="PreviousPart"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PREVIOUS_PART_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>UI Action Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final UIActionEnum[] VALUES_ARRAY =
+		new UIActionEnum[] {
+			NEXT_PART,
+			PREVIOUS_PART,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>UI Action Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<UIActionEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>UI Action Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static UIActionEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			UIActionEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>UI Action Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static UIActionEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			UIActionEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>UI Action Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static UIActionEnum get(int value) {
+		switch (value) {
+			case NEXT_PART_VALUE: return NEXT_PART;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private UIActionEnum(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //UIActionEnum
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/WorkflowActionEnum.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/WorkflowActionEnum.java
index 8f40a4c..bb2aba9 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/WorkflowActionEnum.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/WorkflowActionEnum.java
@@ -78,6 +78,8 @@
 	 * Returns the '<em><b>Workflow Action Enum</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static WorkflowActionEnum get(String literal) {
@@ -94,6 +96,8 @@
 	 * Returns the '<em><b>Workflow Action Enum</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static WorkflowActionEnum getByName(String name) {
@@ -110,6 +114,8 @@
 	 * Returns the '<em><b>Workflow Action Enum</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static WorkflowActionEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionBaseImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionBaseImpl.java
index d1982b2..6a47aee 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionBaseImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionBaseImpl.java
@@ -29,10 +29,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionBaseImpl#getName <em>Name</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionButtonImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionButtonImpl.java
index f831122..21b1e21 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionButtonImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionButtonImpl.java
@@ -15,7 +15,6 @@
 package org.eclipse.osbp.xtext.action.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
@@ -23,13 +22,8 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.osbp.xtext.action.ActionButton;
+import org.eclipse.osbp.xtext.action.ActionCommand;
 import org.eclipse.osbp.xtext.action.ActionDSLPackage;
-import org.eclipse.osbp.xtext.action.ActionType;
-
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
-
-import org.eclipse.osbp.xtext.messagedsl.MessageItem;
 
 /**
  * <!-- begin-user-doc -->
@@ -37,17 +31,13 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionButtonImpl#isDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionButtonImpl#getDescriptionValue <em>Description Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionButtonImpl#getIconURI <em>Icon URI</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionButtonImpl#getGroup <em>Group</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionButtonImpl#getCanexecute <em>Canexecute</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionButtonImpl#getExecuteparameter <em>Executeparameter</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionButtonImpl#getActionType <em>Action Type</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionButtonImpl#getMessage <em>Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionButtonImpl#getCommand <em>Command</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
@@ -113,54 +103,14 @@
 	protected String iconURI = ICON_URI_EDEFAULT;
 
 	/**
-	 * The cached value of the '{@link #getGroup() <em>Group</em>}' reference.
+	 * The cached value of the '{@link #getCommand() <em>Command</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getGroup()
+	 * @see #getCommand()
 	 * @generated
 	 * @ordered
 	 */
-	protected FunctionLibraryGroup group;
-
-	/**
-	 * The cached value of the '{@link #getCanexecute() <em>Canexecute</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getCanexecute()
-	 * @generated
-	 * @ordered
-	 */
-	protected FunctionLibraryFunction canexecute;
-
-	/**
-	 * The cached value of the '{@link #getExecuteparameter() <em>Executeparameter</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getExecuteparameter()
-	 * @generated
-	 * @ordered
-	 */
-	protected FunctionLibraryFunction executeparameter;
-
-	/**
-	 * The cached value of the '{@link #getActionType() <em>Action Type</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getActionType()
-	 * @generated
-	 * @ordered
-	 */
-	protected ActionType actionType;
-
-	/**
-	 * The cached value of the '{@link #getMessage() <em>Message</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getMessage()
-	 * @generated
-	 * @ordered
-	 */
-	protected MessageItem message;
+	protected ActionCommand command;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -249,16 +199,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public FunctionLibraryGroup getGroup() {
-		if (group != null && group.eIsProxy()) {
-			InternalEObject oldGroup = (InternalEObject)group;
-			group = (FunctionLibraryGroup)eResolveProxy(oldGroup);
-			if (group != oldGroup) {
+	public ActionCommand getCommand() {
+		if (command != null && command.eIsProxy()) {
+			InternalEObject oldCommand = (InternalEObject)command;
+			command = (ActionCommand)eResolveProxy(oldCommand);
+			if (command != oldCommand) {
 				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_BUTTON__GROUP, oldGroup, group));
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_BUTTON__COMMAND, oldCommand, command));
 			}
 		}
-		return group;
+		return command;
 	}
 
 	/**
@@ -266,8 +216,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public FunctionLibraryGroup basicGetGroup() {
-		return group;
+	public ActionCommand basicGetCommand() {
+		return command;
 	}
 
 	/**
@@ -275,182 +225,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setGroup(FunctionLibraryGroup newGroup) {
-		FunctionLibraryGroup oldGroup = group;
-		group = newGroup;
+	public void setCommand(ActionCommand newCommand) {
+		ActionCommand oldCommand = command;
+		command = newCommand;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_BUTTON__GROUP, oldGroup, group));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public FunctionLibraryFunction getCanexecute() {
-		if (canexecute != null && canexecute.eIsProxy()) {
-			InternalEObject oldCanexecute = (InternalEObject)canexecute;
-			canexecute = (FunctionLibraryFunction)eResolveProxy(oldCanexecute);
-			if (canexecute != oldCanexecute) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_BUTTON__CANEXECUTE, oldCanexecute, canexecute));
-			}
-		}
-		return canexecute;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public FunctionLibraryFunction basicGetCanexecute() {
-		return canexecute;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setCanexecute(FunctionLibraryFunction newCanexecute) {
-		FunctionLibraryFunction oldCanexecute = canexecute;
-		canexecute = newCanexecute;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_BUTTON__CANEXECUTE, oldCanexecute, canexecute));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public FunctionLibraryFunction getExecuteparameter() {
-		if (executeparameter != null && executeparameter.eIsProxy()) {
-			InternalEObject oldExecuteparameter = (InternalEObject)executeparameter;
-			executeparameter = (FunctionLibraryFunction)eResolveProxy(oldExecuteparameter);
-			if (executeparameter != oldExecuteparameter) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_BUTTON__EXECUTEPARAMETER, oldExecuteparameter, executeparameter));
-			}
-		}
-		return executeparameter;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public FunctionLibraryFunction basicGetExecuteparameter() {
-		return executeparameter;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setExecuteparameter(FunctionLibraryFunction newExecuteparameter) {
-		FunctionLibraryFunction oldExecuteparameter = executeparameter;
-		executeparameter = newExecuteparameter;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_BUTTON__EXECUTEPARAMETER, oldExecuteparameter, executeparameter));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public ActionType getActionType() {
-		return actionType;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetActionType(ActionType newActionType, NotificationChain msgs) {
-		ActionType oldActionType = actionType;
-		actionType = newActionType;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_BUTTON__ACTION_TYPE, oldActionType, newActionType);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setActionType(ActionType newActionType) {
-		if (newActionType != actionType) {
-			NotificationChain msgs = null;
-			if (actionType != null)
-				msgs = ((InternalEObject)actionType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ActionDSLPackage.ACTION_BUTTON__ACTION_TYPE, null, msgs);
-			if (newActionType != null)
-				msgs = ((InternalEObject)newActionType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ActionDSLPackage.ACTION_BUTTON__ACTION_TYPE, null, msgs);
-			msgs = basicSetActionType(newActionType, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_BUTTON__ACTION_TYPE, newActionType, newActionType));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public MessageItem getMessage() {
-		if (message != null && message.eIsProxy()) {
-			InternalEObject oldMessage = (InternalEObject)message;
-			message = (MessageItem)eResolveProxy(oldMessage);
-			if (message != oldMessage) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_BUTTON__MESSAGE, oldMessage, message));
-			}
-		}
-		return message;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public MessageItem basicGetMessage() {
-		return message;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setMessage(MessageItem newMessage) {
-		MessageItem oldMessage = message;
-		message = newMessage;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_BUTTON__MESSAGE, oldMessage, message));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case ActionDSLPackage.ACTION_BUTTON__ACTION_TYPE:
-				return basicSetActionType(null, msgs);
-		}
-		return super.eInverseRemove(otherEnd, featureID, msgs);
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_BUTTON__COMMAND, oldCommand, command));
 	}
 
 	/**
@@ -467,20 +246,9 @@
 				return getDescriptionValue();
 			case ActionDSLPackage.ACTION_BUTTON__ICON_URI:
 				return getIconURI();
-			case ActionDSLPackage.ACTION_BUTTON__GROUP:
-				if (resolve) return getGroup();
-				return basicGetGroup();
-			case ActionDSLPackage.ACTION_BUTTON__CANEXECUTE:
-				if (resolve) return getCanexecute();
-				return basicGetCanexecute();
-			case ActionDSLPackage.ACTION_BUTTON__EXECUTEPARAMETER:
-				if (resolve) return getExecuteparameter();
-				return basicGetExecuteparameter();
-			case ActionDSLPackage.ACTION_BUTTON__ACTION_TYPE:
-				return getActionType();
-			case ActionDSLPackage.ACTION_BUTTON__MESSAGE:
-				if (resolve) return getMessage();
-				return basicGetMessage();
+			case ActionDSLPackage.ACTION_BUTTON__COMMAND:
+				if (resolve) return getCommand();
+				return basicGetCommand();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -502,20 +270,8 @@
 			case ActionDSLPackage.ACTION_BUTTON__ICON_URI:
 				setIconURI((String)newValue);
 				return;
-			case ActionDSLPackage.ACTION_BUTTON__GROUP:
-				setGroup((FunctionLibraryGroup)newValue);
-				return;
-			case ActionDSLPackage.ACTION_BUTTON__CANEXECUTE:
-				setCanexecute((FunctionLibraryFunction)newValue);
-				return;
-			case ActionDSLPackage.ACTION_BUTTON__EXECUTEPARAMETER:
-				setExecuteparameter((FunctionLibraryFunction)newValue);
-				return;
-			case ActionDSLPackage.ACTION_BUTTON__ACTION_TYPE:
-				setActionType((ActionType)newValue);
-				return;
-			case ActionDSLPackage.ACTION_BUTTON__MESSAGE:
-				setMessage((MessageItem)newValue);
+			case ActionDSLPackage.ACTION_BUTTON__COMMAND:
+				setCommand((ActionCommand)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -538,20 +294,8 @@
 			case ActionDSLPackage.ACTION_BUTTON__ICON_URI:
 				setIconURI(ICON_URI_EDEFAULT);
 				return;
-			case ActionDSLPackage.ACTION_BUTTON__GROUP:
-				setGroup((FunctionLibraryGroup)null);
-				return;
-			case ActionDSLPackage.ACTION_BUTTON__CANEXECUTE:
-				setCanexecute((FunctionLibraryFunction)null);
-				return;
-			case ActionDSLPackage.ACTION_BUTTON__EXECUTEPARAMETER:
-				setExecuteparameter((FunctionLibraryFunction)null);
-				return;
-			case ActionDSLPackage.ACTION_BUTTON__ACTION_TYPE:
-				setActionType((ActionType)null);
-				return;
-			case ActionDSLPackage.ACTION_BUTTON__MESSAGE:
-				setMessage((MessageItem)null);
+			case ActionDSLPackage.ACTION_BUTTON__COMMAND:
+				setCommand((ActionCommand)null);
 				return;
 		}
 		super.eUnset(featureID);
@@ -571,16 +315,8 @@
 				return DESCRIPTION_VALUE_EDEFAULT == null ? descriptionValue != null : !DESCRIPTION_VALUE_EDEFAULT.equals(descriptionValue);
 			case ActionDSLPackage.ACTION_BUTTON__ICON_URI:
 				return ICON_URI_EDEFAULT == null ? iconURI != null : !ICON_URI_EDEFAULT.equals(iconURI);
-			case ActionDSLPackage.ACTION_BUTTON__GROUP:
-				return group != null;
-			case ActionDSLPackage.ACTION_BUTTON__CANEXECUTE:
-				return canexecute != null;
-			case ActionDSLPackage.ACTION_BUTTON__EXECUTEPARAMETER:
-				return executeparameter != null;
-			case ActionDSLPackage.ACTION_BUTTON__ACTION_TYPE:
-				return actionType != null;
-			case ActionDSLPackage.ACTION_BUTTON__MESSAGE:
-				return message != null;
+			case ActionDSLPackage.ACTION_BUTTON__COMMAND:
+				return command != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionChartImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionChartImpl.java
index b0de0c8..de8ac56 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionChartImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionChartImpl.java
@@ -30,10 +30,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionChartImpl#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionCommandImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionCommandImpl.java
new file mode 100644
index 0000000..af04019
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionCommandImpl.java
@@ -0,0 +1,417 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from ActionDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.action.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.action.ActionCommand;
+import org.eclipse.osbp.xtext.action.ActionDSLPackage;
+import org.eclipse.osbp.xtext.action.ActionType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Action Command</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionCommandImpl#getActionType <em>Action Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionCommandImpl#isHasKeyBinding <em>Has Key Binding</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionCommandImpl#getKeyBinding <em>Key Binding</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionCommandImpl#isHasDescription <em>Has Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionCommandImpl#getDescription <em>Description</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ActionCommandImpl extends ActionBaseImpl implements ActionCommand {
+	/**
+	 * The cached value of the '{@link #getActionType() <em>Action Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActionType()
+	 * @generated
+	 * @ordered
+	 */
+	protected ActionType actionType;
+
+	/**
+	 * The default value of the '{@link #isHasKeyBinding() <em>Has Key Binding</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasKeyBinding()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_KEY_BINDING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasKeyBinding() <em>Has Key Binding</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasKeyBinding()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasKeyBinding = HAS_KEY_BINDING_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getKeyBinding() <em>Key Binding</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKeyBinding()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_BINDING_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKeyBinding() <em>Key Binding</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKeyBinding()
+	 * @generated
+	 * @ordered
+	 */
+	protected String keyBinding = KEY_BINDING_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isHasDescription() <em>Has Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_DESCRIPTION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasDescription() <em>Has Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasDescription = HAS_DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ActionCommandImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ActionDSLPackage.Literals.ACTION_COMMAND;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ActionType getActionType() {
+		return actionType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetActionType(ActionType newActionType, NotificationChain msgs) {
+		ActionType oldActionType = actionType;
+		actionType = newActionType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_COMMAND__ACTION_TYPE, oldActionType, newActionType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setActionType(ActionType newActionType) {
+		if (newActionType != actionType) {
+			NotificationChain msgs = null;
+			if (actionType != null)
+				msgs = ((InternalEObject)actionType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ActionDSLPackage.ACTION_COMMAND__ACTION_TYPE, null, msgs);
+			if (newActionType != null)
+				msgs = ((InternalEObject)newActionType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ActionDSLPackage.ACTION_COMMAND__ACTION_TYPE, null, msgs);
+			msgs = basicSetActionType(newActionType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_COMMAND__ACTION_TYPE, newActionType, newActionType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasKeyBinding() {
+		return hasKeyBinding;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasKeyBinding(boolean newHasKeyBinding) {
+		boolean oldHasKeyBinding = hasKeyBinding;
+		hasKeyBinding = newHasKeyBinding;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_COMMAND__HAS_KEY_BINDING, oldHasKeyBinding, hasKeyBinding));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getKeyBinding() {
+		return keyBinding;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKeyBinding(String newKeyBinding) {
+		String oldKeyBinding = keyBinding;
+		keyBinding = newKeyBinding;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_COMMAND__KEY_BINDING, oldKeyBinding, keyBinding));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasDescription() {
+		return hasDescription;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasDescription(boolean newHasDescription) {
+		boolean oldHasDescription = hasDescription;
+		hasDescription = newHasDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_COMMAND__HAS_DESCRIPTION, oldHasDescription, hasDescription));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_COMMAND__DESCRIPTION, oldDescription, description));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_COMMAND__ACTION_TYPE:
+				return basicSetActionType(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_COMMAND__ACTION_TYPE:
+				return getActionType();
+			case ActionDSLPackage.ACTION_COMMAND__HAS_KEY_BINDING:
+				return isHasKeyBinding();
+			case ActionDSLPackage.ACTION_COMMAND__KEY_BINDING:
+				return getKeyBinding();
+			case ActionDSLPackage.ACTION_COMMAND__HAS_DESCRIPTION:
+				return isHasDescription();
+			case ActionDSLPackage.ACTION_COMMAND__DESCRIPTION:
+				return getDescription();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_COMMAND__ACTION_TYPE:
+				setActionType((ActionType)newValue);
+				return;
+			case ActionDSLPackage.ACTION_COMMAND__HAS_KEY_BINDING:
+				setHasKeyBinding((Boolean)newValue);
+				return;
+			case ActionDSLPackage.ACTION_COMMAND__KEY_BINDING:
+				setKeyBinding((String)newValue);
+				return;
+			case ActionDSLPackage.ACTION_COMMAND__HAS_DESCRIPTION:
+				setHasDescription((Boolean)newValue);
+				return;
+			case ActionDSLPackage.ACTION_COMMAND__DESCRIPTION:
+				setDescription((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_COMMAND__ACTION_TYPE:
+				setActionType((ActionType)null);
+				return;
+			case ActionDSLPackage.ACTION_COMMAND__HAS_KEY_BINDING:
+				setHasKeyBinding(HAS_KEY_BINDING_EDEFAULT);
+				return;
+			case ActionDSLPackage.ACTION_COMMAND__KEY_BINDING:
+				setKeyBinding(KEY_BINDING_EDEFAULT);
+				return;
+			case ActionDSLPackage.ACTION_COMMAND__HAS_DESCRIPTION:
+				setHasDescription(HAS_DESCRIPTION_EDEFAULT);
+				return;
+			case ActionDSLPackage.ACTION_COMMAND__DESCRIPTION:
+				setDescription(DESCRIPTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_COMMAND__ACTION_TYPE:
+				return actionType != null;
+			case ActionDSLPackage.ACTION_COMMAND__HAS_KEY_BINDING:
+				return hasKeyBinding != HAS_KEY_BINDING_EDEFAULT;
+			case ActionDSLPackage.ACTION_COMMAND__KEY_BINDING:
+				return KEY_BINDING_EDEFAULT == null ? keyBinding != null : !KEY_BINDING_EDEFAULT.equals(keyBinding);
+			case ActionDSLPackage.ACTION_COMMAND__HAS_DESCRIPTION:
+				return hasDescription != HAS_DESCRIPTION_EDEFAULT;
+			case ActionDSLPackage.ACTION_COMMAND__DESCRIPTION:
+				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (hasKeyBinding: ");
+		result.append(hasKeyBinding);
+		result.append(", keyBinding: ");
+		result.append(keyBinding);
+		result.append(", hasDescription: ");
+		result.append(hasDescription);
+		result.append(", description: ");
+		result.append(description);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ActionCommandImpl
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDSLFactoryImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDSLFactoryImpl.java
index 8c3352a..e73c385 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDSLFactoryImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDSLFactoryImpl.java
@@ -74,6 +74,7 @@
 			case ActionDSLPackage.ACTION_LAZY_RESOLVER: return createActionLazyResolver();
 			case ActionDSLPackage.ACTION_PACKAGE: return createActionPackage();
 			case ActionDSLPackage.ACTION_BASE: return createActionBase();
+			case ActionDSLPackage.ACTION_COMMAND: return createActionCommand();
 			case ActionDSLPackage.ACTION_TOOLBAR: return createActionToolbar();
 			case ActionDSLPackage.ACTION_BUTTON: return createActionButton();
 			case ActionDSLPackage.ACTION_TASK: return createActionTask();
@@ -83,7 +84,8 @@
 			case ActionDSLPackage.ACTION_CHART: return createActionChart();
 			case ActionDSLPackage.ACTION_WORKFLOW: return createActionWorkflow();
 			case ActionDSLPackage.ACTION_DATAINTERCHANGE: return createActionDatainterchange();
-			case ActionDSLPackage.ACTION_GENERIC: return createActionGeneric();
+			case ActionDSLPackage.ACTION_UI: return createActionUI();
+			case ActionDSLPackage.ACTION_FUNCTION: return createActionFunction();
 			case ActionDSLPackage.ACTION_PARAMETER: return createActionParameter();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
@@ -112,6 +114,8 @@
 				return createWorkflowActionEnumFromString(eDataType, initialValue);
 			case ActionDSLPackage.DATAINTERCHANGE_ACTION_ENUM:
 				return createDatainterchangeActionEnumFromString(eDataType, initialValue);
+			case ActionDSLPackage.UI_ACTION_ENUM:
+				return createUIActionEnumFromString(eDataType, initialValue);
 			case ActionDSLPackage.INTERNAL_EOBJECT:
 				return createInternalEObjectFromString(eDataType, initialValue);
 			default:
@@ -141,6 +145,8 @@
 				return convertWorkflowActionEnumToString(eDataType, instanceValue);
 			case ActionDSLPackage.DATAINTERCHANGE_ACTION_ENUM:
 				return convertDatainterchangeActionEnumToString(eDataType, instanceValue);
+			case ActionDSLPackage.UI_ACTION_ENUM:
+				return convertUIActionEnumToString(eDataType, instanceValue);
 			case ActionDSLPackage.INTERNAL_EOBJECT:
 				return convertInternalEObjectToString(eDataType, instanceValue);
 			default:
@@ -193,6 +199,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public ActionCommand createActionCommand() {
+		ActionCommandImpl actionCommand = new ActionCommandImpl();
+		return actionCommand;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public ActionToolbar createActionToolbar() {
 		ActionToolbarImpl actionToolbar = new ActionToolbarImpl();
 		return actionToolbar;
@@ -283,9 +299,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public ActionGeneric createActionGeneric() {
-		ActionGenericImpl actionGeneric = new ActionGenericImpl();
-		return actionGeneric;
+	public ActionUI createActionUI() {
+		ActionUIImpl actionUI = new ActionUIImpl();
+		return actionUI;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ActionFunction createActionFunction() {
+		ActionFunctionImpl actionFunction = new ActionFunctionImpl();
+		return actionFunction;
 	}
 
 	/**
@@ -443,6 +469,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public UIActionEnum createUIActionEnumFromString(EDataType eDataType, String initialValue) {
+		UIActionEnum result = UIActionEnum.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 convertUIActionEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public InternalEObject createInternalEObjectFromString(EDataType eDataType, String initialValue) {
 		return (InternalEObject)super.createFromString(eDataType, initialValue);
 	}
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDSLPackageImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDSLPackageImpl.java
index 3b248ba..4e5e563 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDSLPackageImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDSLPackageImpl.java
@@ -31,11 +31,12 @@
 import org.eclipse.osbp.xtext.action.ActionBase;
 import org.eclipse.osbp.xtext.action.ActionButton;
 import org.eclipse.osbp.xtext.action.ActionChart;
+import org.eclipse.osbp.xtext.action.ActionCommand;
 import org.eclipse.osbp.xtext.action.ActionDSLFactory;
 import org.eclipse.osbp.xtext.action.ActionDSLPackage;
 import org.eclipse.osbp.xtext.action.ActionDatainterchange;
 import org.eclipse.osbp.xtext.action.ActionDialog;
-import org.eclipse.osbp.xtext.action.ActionGeneric;
+import org.eclipse.osbp.xtext.action.ActionFunction;
 import org.eclipse.osbp.xtext.action.ActionLazyResolver;
 import org.eclipse.osbp.xtext.action.ActionModel;
 import org.eclipse.osbp.xtext.action.ActionPackage;
@@ -45,6 +46,7 @@
 import org.eclipse.osbp.xtext.action.ActionTask;
 import org.eclipse.osbp.xtext.action.ActionToolbar;
 import org.eclipse.osbp.xtext.action.ActionType;
+import org.eclipse.osbp.xtext.action.ActionUI;
 import org.eclipse.osbp.xtext.action.ActionWorkflow;
 import org.eclipse.osbp.xtext.action.ChartActionEnum;
 import org.eclipse.osbp.xtext.action.DatainterchangeActionEnum;
@@ -52,6 +54,7 @@
 import org.eclipse.osbp.xtext.action.ReportActionEnum;
 import org.eclipse.osbp.xtext.action.SelectWorkloadActionEnum;
 import org.eclipse.osbp.xtext.action.TaskActionEnum;
+import org.eclipse.osbp.xtext.action.UIActionEnum;
 import org.eclipse.osbp.xtext.action.WorkflowActionEnum;
 
 import org.eclipse.osbp.xtext.datainterchange.DataDSLPackage;
@@ -60,6 +63,8 @@
 
 import org.eclipse.osbp.xtext.messagedsl.MessageDSLPackage;
 
+import org.eclipse.xtext.xtype.XtypePackage;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Package</b>.
@@ -100,6 +105,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass actionCommandEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EClass actionToolbarEClass = null;
 
 	/**
@@ -170,7 +182,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass actionGenericEClass = null;
+	private EClass actionUIEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass actionFunctionEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -233,6 +252,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EEnum uiActionEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EDataType internalEObjectEDataType = null;
 
 	/**
@@ -283,8 +309,8 @@
 
 		// Initialize simple dependencies
 		DataDSLPackage.eINSTANCE.eClass();
-		MessageDSLPackage.eINSTANCE.eClass();
 		FunctionLibraryDSLPackage.eINSTANCE.eClass();
+		MessageDSLPackage.eINSTANCE.eClass();
 
 		// Create package meta-data objects
 		theActionDSLPackage.createPackageContents();
@@ -315,7 +341,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getActionModel_Packages() {
+	public EReference getActionModel_ImportSection() {
 		return (EReference)actionModelEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -324,6 +350,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getActionModel_Packages() {
+		return (EReference)actionModelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getActionLazyResolver() {
 		return actionLazyResolverEClass;
 	}
@@ -351,7 +386,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getActionPackage_Toolbars() {
+	public EReference getActionPackage_Commands() {
 		return (EReference)actionPackageEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -360,6 +395,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getActionPackage_Toolbars() {
+		return (EReference)actionPackageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getActionBase() {
 		return actionBaseEClass;
 	}
@@ -378,6 +422,60 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EClass getActionCommand() {
+		return actionCommandEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActionCommand_ActionType() {
+		return (EReference)actionCommandEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActionCommand_HasKeyBinding() {
+		return (EAttribute)actionCommandEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActionCommand_KeyBinding() {
+		return (EAttribute)actionCommandEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActionCommand_HasDescription() {
+		return (EAttribute)actionCommandEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActionCommand_Description() {
+		return (EAttribute)actionCommandEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getActionToolbar() {
 		return actionToolbarEClass;
 	}
@@ -450,7 +548,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getActionButton_Group() {
+	public EReference getActionButton_Command() {
 		return (EReference)actionButtonEClass.getEStructuralFeatures().get(3);
 	}
 
@@ -459,42 +557,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getActionButton_Canexecute() {
-		return (EReference)actionButtonEClass.getEStructuralFeatures().get(4);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EReference getActionButton_Executeparameter() {
-		return (EReference)actionButtonEClass.getEStructuralFeatures().get(5);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EReference getActionButton_ActionType() {
-		return (EReference)actionButtonEClass.getEStructuralFeatures().get(6);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EReference getActionButton_Message() {
-		return (EReference)actionButtonEClass.getEStructuralFeatures().get(7);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public EClass getActionType() {
 		return actionTypeEClass;
 	}
@@ -639,8 +701,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getActionGeneric() {
-		return actionGenericEClass;
+	public EClass getActionUI() {
+		return actionUIEClass;
 	}
 
 	/**
@@ -648,8 +710,134 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getActionGeneric_Action() {
-		return (EAttribute)actionGenericEClass.getEStructuralFeatures().get(0);
+	public EAttribute getActionUI_Action() {
+		return (EAttribute)actionUIEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getActionFunction() {
+		return actionFunctionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActionFunction_ActionGroup() {
+		return (EReference)actionFunctionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActionFunction_CanExecute() {
+		return (EReference)actionFunctionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActionFunction_HasExecuteImmediate() {
+		return (EAttribute)actionFunctionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActionFunction_HasExecuteLater() {
+		return (EAttribute)actionFunctionEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActionFunction_ExecuteImmediate() {
+		return (EReference)actionFunctionEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActionFunction_ExecuteLater() {
+		return (EReference)actionFunctionEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActionFunction_HasMessage() {
+		return (EAttribute)actionFunctionEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActionFunction_MessageCategory() {
+		return (EReference)actionFunctionEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActionFunction_OnFailMessage() {
+		return (EReference)actionFunctionEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActionFunction_HasSuccessMessage() {
+		return (EAttribute)actionFunctionEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActionFunction_OnSuccessMessage() {
+		return (EReference)actionFunctionEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getActionFunction_HasStartedMessage() {
+		return (EAttribute)actionFunctionEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getActionFunction_OnStartedMessage() {
+		return (EReference)actionFunctionEClass.getEStructuralFeatures().get(12);
 	}
 
 	/**
@@ -738,6 +926,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EEnum getUIActionEnum() {
+		return uiActionEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EDataType getInternalEObject() {
 		return internalEObjectEDataType;
 	}
@@ -771,17 +968,26 @@
 
 		// Create classes and their features
 		actionModelEClass = createEClass(ACTION_MODEL);
+		createEReference(actionModelEClass, ACTION_MODEL__IMPORT_SECTION);
 		createEReference(actionModelEClass, ACTION_MODEL__PACKAGES);
 
 		actionLazyResolverEClass = createEClass(ACTION_LAZY_RESOLVER);
 		createEOperation(actionLazyResolverEClass, ACTION_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT);
 
 		actionPackageEClass = createEClass(ACTION_PACKAGE);
+		createEReference(actionPackageEClass, ACTION_PACKAGE__COMMANDS);
 		createEReference(actionPackageEClass, ACTION_PACKAGE__TOOLBARS);
 
 		actionBaseEClass = createEClass(ACTION_BASE);
 		createEAttribute(actionBaseEClass, ACTION_BASE__NAME);
 
+		actionCommandEClass = createEClass(ACTION_COMMAND);
+		createEReference(actionCommandEClass, ACTION_COMMAND__ACTION_TYPE);
+		createEAttribute(actionCommandEClass, ACTION_COMMAND__HAS_KEY_BINDING);
+		createEAttribute(actionCommandEClass, ACTION_COMMAND__KEY_BINDING);
+		createEAttribute(actionCommandEClass, ACTION_COMMAND__HAS_DESCRIPTION);
+		createEAttribute(actionCommandEClass, ACTION_COMMAND__DESCRIPTION);
+
 		actionToolbarEClass = createEClass(ACTION_TOOLBAR);
 		createEAttribute(actionToolbarEClass, ACTION_TOOLBAR__DESCRIPTION);
 		createEAttribute(actionToolbarEClass, ACTION_TOOLBAR__DESCRIPTION_VALUE);
@@ -791,11 +997,7 @@
 		createEAttribute(actionButtonEClass, ACTION_BUTTON__DESCRIPTION);
 		createEAttribute(actionButtonEClass, ACTION_BUTTON__DESCRIPTION_VALUE);
 		createEAttribute(actionButtonEClass, ACTION_BUTTON__ICON_URI);
-		createEReference(actionButtonEClass, ACTION_BUTTON__GROUP);
-		createEReference(actionButtonEClass, ACTION_BUTTON__CANEXECUTE);
-		createEReference(actionButtonEClass, ACTION_BUTTON__EXECUTEPARAMETER);
-		createEReference(actionButtonEClass, ACTION_BUTTON__ACTION_TYPE);
-		createEReference(actionButtonEClass, ACTION_BUTTON__MESSAGE);
+		createEReference(actionButtonEClass, ACTION_BUTTON__COMMAND);
 
 		actionTypeEClass = createEClass(ACTION_TYPE);
 
@@ -821,8 +1023,23 @@
 		createEAttribute(actionDatainterchangeEClass, ACTION_DATAINTERCHANGE__ACTION);
 		createEReference(actionDatainterchangeEClass, ACTION_DATAINTERCHANGE__DATA_REF);
 
-		actionGenericEClass = createEClass(ACTION_GENERIC);
-		createEAttribute(actionGenericEClass, ACTION_GENERIC__ACTION);
+		actionUIEClass = createEClass(ACTION_UI);
+		createEAttribute(actionUIEClass, ACTION_UI__ACTION);
+
+		actionFunctionEClass = createEClass(ACTION_FUNCTION);
+		createEReference(actionFunctionEClass, ACTION_FUNCTION__ACTION_GROUP);
+		createEReference(actionFunctionEClass, ACTION_FUNCTION__CAN_EXECUTE);
+		createEAttribute(actionFunctionEClass, ACTION_FUNCTION__HAS_EXECUTE_IMMEDIATE);
+		createEAttribute(actionFunctionEClass, ACTION_FUNCTION__HAS_EXECUTE_LATER);
+		createEReference(actionFunctionEClass, ACTION_FUNCTION__EXECUTE_IMMEDIATE);
+		createEReference(actionFunctionEClass, ACTION_FUNCTION__EXECUTE_LATER);
+		createEAttribute(actionFunctionEClass, ACTION_FUNCTION__HAS_MESSAGE);
+		createEReference(actionFunctionEClass, ACTION_FUNCTION__MESSAGE_CATEGORY);
+		createEReference(actionFunctionEClass, ACTION_FUNCTION__ON_FAIL_MESSAGE);
+		createEAttribute(actionFunctionEClass, ACTION_FUNCTION__HAS_SUCCESS_MESSAGE);
+		createEReference(actionFunctionEClass, ACTION_FUNCTION__ON_SUCCESS_MESSAGE);
+		createEAttribute(actionFunctionEClass, ACTION_FUNCTION__HAS_STARTED_MESSAGE);
+		createEReference(actionFunctionEClass, ACTION_FUNCTION__ON_STARTED_MESSAGE);
 
 		actionParameterEClass = createEClass(ACTION_PARAMETER);
 		createEReference(actionParameterEClass, ACTION_PARAMETER__PARAMETER);
@@ -835,6 +1052,7 @@
 		chartActionEnumEEnum = createEEnum(CHART_ACTION_ENUM);
 		workflowActionEnumEEnum = createEEnum(WORKFLOW_ACTION_ENUM);
 		datainterchangeActionEnumEEnum = createEEnum(DATAINTERCHANGE_ACTION_ENUM);
+		uiActionEnumEEnum = createEEnum(UI_ACTION_ENUM);
 
 		// Create data types
 		internalEObjectEDataType = createEDataType(INTERNAL_EOBJECT);
@@ -864,11 +1082,12 @@
 		setNsURI(eNS_URI);
 
 		// Obtain other dependent packages
+		XtypePackage theXtypePackage = (XtypePackage)EPackage.Registry.INSTANCE.getEPackage(XtypePackage.eNS_URI);
 		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
 		OSBPTypesPackage theOSBPTypesPackage = (OSBPTypesPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPTypesPackage.eNS_URI);
+		DataDSLPackage theDataDSLPackage = (DataDSLPackage)EPackage.Registry.INSTANCE.getEPackage(DataDSLPackage.eNS_URI);
 		FunctionLibraryDSLPackage theFunctionLibraryDSLPackage = (FunctionLibraryDSLPackage)EPackage.Registry.INSTANCE.getEPackage(FunctionLibraryDSLPackage.eNS_URI);
 		MessageDSLPackage theMessageDSLPackage = (MessageDSLPackage)EPackage.Registry.INSTANCE.getEPackage(MessageDSLPackage.eNS_URI);
-		DataDSLPackage theDataDSLPackage = (DataDSLPackage)EPackage.Registry.INSTANCE.getEPackage(DataDSLPackage.eNS_URI);
 
 		// Create type parameters
 
@@ -877,6 +1096,7 @@
 		// Add supertypes to classes
 		actionPackageEClass.getESuperTypes().add(theOSBPTypesPackage.getLPackage());
 		actionBaseEClass.getESuperTypes().add(this.getActionLazyResolver());
+		actionCommandEClass.getESuperTypes().add(this.getActionBase());
 		actionToolbarEClass.getESuperTypes().add(this.getActionBase());
 		actionButtonEClass.getESuperTypes().add(this.getActionBase());
 		actionTypeEClass.getESuperTypes().add(this.getActionLazyResolver());
@@ -887,11 +1107,13 @@
 		actionChartEClass.getESuperTypes().add(this.getActionType());
 		actionWorkflowEClass.getESuperTypes().add(this.getActionType());
 		actionDatainterchangeEClass.getESuperTypes().add(this.getActionType());
-		actionGenericEClass.getESuperTypes().add(this.getActionType());
+		actionUIEClass.getESuperTypes().add(this.getActionType());
+		actionFunctionEClass.getESuperTypes().add(this.getActionType());
 		actionParameterEClass.getESuperTypes().add(this.getActionBase());
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(actionModelEClass, ActionModel.class, "ActionModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getActionModel_ImportSection(), theXtypePackage.getXImportSection(), null, "importSection", null, 0, 1, ActionModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getActionModel_Packages(), this.getActionPackage(), null, "packages", null, 0, -1, ActionModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(actionLazyResolverEClass, ActionLazyResolver.class, "ActionLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -900,11 +1122,19 @@
 		addEParameter(op, this.getInternalEObject(), "proxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
 
 		initEClass(actionPackageEClass, ActionPackage.class, "ActionPackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getActionPackage_Commands(), this.getActionCommand(), null, "commands", null, 0, -1, ActionPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getActionPackage_Toolbars(), this.getActionToolbar(), null, "toolbars", null, 0, -1, ActionPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(actionBaseEClass, ActionBase.class, "ActionBase", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getActionBase_Name(), theEcorePackage.getEString(), "name", null, 0, 1, ActionBase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(actionCommandEClass, ActionCommand.class, "ActionCommand", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getActionCommand_ActionType(), this.getActionType(), null, "actionType", null, 0, 1, ActionCommand.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getActionCommand_HasKeyBinding(), theEcorePackage.getEBoolean(), "hasKeyBinding", null, 0, 1, ActionCommand.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getActionCommand_KeyBinding(), theEcorePackage.getEString(), "keyBinding", null, 0, 1, ActionCommand.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getActionCommand_HasDescription(), theEcorePackage.getEBoolean(), "hasDescription", null, 0, 1, ActionCommand.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getActionCommand_Description(), theEcorePackage.getEString(), "description", null, 0, 1, ActionCommand.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		initEClass(actionToolbarEClass, ActionToolbar.class, "ActionToolbar", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getActionToolbar_Description(), theEcorePackage.getEBoolean(), "description", null, 0, 1, ActionToolbar.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getActionToolbar_DescriptionValue(), theEcorePackage.getEString(), "descriptionValue", null, 0, 1, ActionToolbar.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -914,11 +1144,7 @@
 		initEAttribute(getActionButton_Description(), theEcorePackage.getEBoolean(), "description", null, 0, 1, ActionButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getActionButton_DescriptionValue(), theEcorePackage.getEString(), "descriptionValue", null, 0, 1, ActionButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getActionButton_IconURI(), theEcorePackage.getEString(), "iconURI", null, 0, 1, ActionButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getActionButton_Group(), theFunctionLibraryDSLPackage.getFunctionLibraryGroup(), null, "group", null, 0, 1, ActionButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getActionButton_Canexecute(), theFunctionLibraryDSLPackage.getFunctionLibraryFunction(), null, "canexecute", null, 0, 1, ActionButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getActionButton_Executeparameter(), theFunctionLibraryDSLPackage.getFunctionLibraryFunction(), null, "executeparameter", null, 0, 1, ActionButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getActionButton_ActionType(), this.getActionType(), null, "actionType", null, 0, 1, ActionButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getActionButton_Message(), theMessageDSLPackage.getMessageItem(), null, "message", null, 0, 1, ActionButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActionButton_Command(), this.getActionCommand(), null, "command", null, 0, 1, ActionButton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(actionTypeEClass, ActionType.class, "ActionType", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
@@ -944,8 +1170,23 @@
 		initEAttribute(getActionDatainterchange_Action(), this.getDatainterchangeActionEnum(), "action", null, 0, 1, ActionDatainterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getActionDatainterchange_DataRef(), theDataDSLPackage.getDataInterchange(), null, "dataRef", null, 0, 1, ActionDatainterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(actionGenericEClass, ActionGeneric.class, "ActionGeneric", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getActionGeneric_Action(), theEcorePackage.getEString(), "action", null, 0, 1, ActionGeneric.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(actionUIEClass, ActionUI.class, "ActionUI", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getActionUI_Action(), this.getUIActionEnum(), "action", null, 0, 1, ActionUI.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(actionFunctionEClass, ActionFunction.class, "ActionFunction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getActionFunction_ActionGroup(), theFunctionLibraryDSLPackage.getFunctionLibraryActionGroup(), null, "actionGroup", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActionFunction_CanExecute(), theFunctionLibraryDSLPackage.getFunctionLibraryCanExecute(), null, "canExecute", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getActionFunction_HasExecuteImmediate(), theEcorePackage.getEBoolean(), "hasExecuteImmediate", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getActionFunction_HasExecuteLater(), theEcorePackage.getEBoolean(), "hasExecuteLater", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActionFunction_ExecuteImmediate(), theFunctionLibraryDSLPackage.getFunctionLibraryExecute(), null, "executeImmediate", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActionFunction_ExecuteLater(), theFunctionLibraryDSLPackage.getFunctionLibraryExecute(), null, "executeLater", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getActionFunction_HasMessage(), theEcorePackage.getEBoolean(), "hasMessage", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActionFunction_MessageCategory(), theMessageDSLPackage.getMessageCategory(), null, "messageCategory", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActionFunction_OnFailMessage(), theMessageDSLPackage.getMessageItem(), null, "onFailMessage", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getActionFunction_HasSuccessMessage(), theEcorePackage.getEBoolean(), "hasSuccessMessage", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActionFunction_OnSuccessMessage(), theMessageDSLPackage.getMessageItem(), null, "onSuccessMessage", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getActionFunction_HasStartedMessage(), theEcorePackage.getEBoolean(), "hasStartedMessage", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getActionFunction_OnStartedMessage(), theMessageDSLPackage.getMessageItem(), null, "onStartedMessage", null, 0, 1, ActionFunction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(actionParameterEClass, ActionParameter.class, "ActionParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getActionParameter_Parameter(), theFunctionLibraryDSLPackage.getFunctionLibraryParameter(), null, "parameter", null, 0, 1, ActionParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -992,6 +1233,10 @@
 		addEEnumLiteral(datainterchangeActionEnumEEnum, DatainterchangeActionEnum.DATAINTERCHANGE_ACTION_IMPORT);
 		addEEnumLiteral(datainterchangeActionEnumEEnum, DatainterchangeActionEnum.DATAINTERCHANGE_ACTION_EXPORT);
 
+		initEEnum(uiActionEnumEEnum, UIActionEnum.class, "UIActionEnum");
+		addEEnumLiteral(uiActionEnumEEnum, UIActionEnum.NEXT_PART);
+		addEEnumLiteral(uiActionEnumEEnum, UIActionEnum.PREVIOUS_PART);
+
 		// Initialize data types
 		initEDataType(internalEObjectEDataType, InternalEObject.class, "InternalEObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
 
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDatainterchangeImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDatainterchangeImpl.java
index afc95ca..ae741eb 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDatainterchangeImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDatainterchangeImpl.java
@@ -33,11 +33,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionDatainterchangeImpl#getAction <em>Action</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionDatainterchangeImpl#getDataRef <em>Data Ref</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDialogImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDialogImpl.java
index 5352ff9..d198e9d 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDialogImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionDialogImpl.java
@@ -30,10 +30,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionDialogImpl#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionFunctionImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionFunctionImpl.java
new file mode 100644
index 0000000..29fb284
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionFunctionImpl.java
@@ -0,0 +1,878 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from ActionDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.action.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.action.ActionDSLPackage;
+import org.eclipse.osbp.xtext.action.ActionFunction;
+
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryActionGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryCanExecute;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryExecute;
+
+import org.eclipse.osbp.xtext.messagedsl.MessageCategory;
+import org.eclipse.osbp.xtext.messagedsl.MessageItem;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Action Function</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#getActionGroup <em>Action Group</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#getCanExecute <em>Can Execute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#isHasExecuteImmediate <em>Has Execute Immediate</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#isHasExecuteLater <em>Has Execute Later</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#getExecuteImmediate <em>Execute Immediate</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#getExecuteLater <em>Execute Later</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#isHasMessage <em>Has Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#getMessageCategory <em>Message Category</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#getOnFailMessage <em>On Fail Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#isHasSuccessMessage <em>Has Success Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#getOnSuccessMessage <em>On Success Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#isHasStartedMessage <em>Has Started Message</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionFunctionImpl#getOnStartedMessage <em>On Started Message</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ActionFunctionImpl extends ActionLazyResolverImpl implements ActionFunction {
+	/**
+	 * The cached value of the '{@link #getActionGroup() <em>Action Group</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActionGroup()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryActionGroup actionGroup;
+
+	/**
+	 * The cached value of the '{@link #getCanExecute() <em>Can Execute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCanExecute()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryCanExecute canExecute;
+
+	/**
+	 * The default value of the '{@link #isHasExecuteImmediate() <em>Has Execute Immediate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasExecuteImmediate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_EXECUTE_IMMEDIATE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasExecuteImmediate() <em>Has Execute Immediate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasExecuteImmediate()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasExecuteImmediate = HAS_EXECUTE_IMMEDIATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isHasExecuteLater() <em>Has Execute Later</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasExecuteLater()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_EXECUTE_LATER_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasExecuteLater() <em>Has Execute Later</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasExecuteLater()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasExecuteLater = HAS_EXECUTE_LATER_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getExecuteImmediate() <em>Execute Immediate</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExecuteImmediate()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryExecute executeImmediate;
+
+	/**
+	 * The cached value of the '{@link #getExecuteLater() <em>Execute Later</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExecuteLater()
+	 * @generated
+	 * @ordered
+	 */
+	protected FunctionLibraryExecute executeLater;
+
+	/**
+	 * The default value of the '{@link #isHasMessage() <em>Has Message</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasMessage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_MESSAGE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasMessage() <em>Has Message</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasMessage()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasMessage = HAS_MESSAGE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getMessageCategory() <em>Message Category</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMessageCategory()
+	 * @generated
+	 * @ordered
+	 */
+	protected MessageCategory messageCategory;
+
+	/**
+	 * The cached value of the '{@link #getOnFailMessage() <em>On Fail Message</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOnFailMessage()
+	 * @generated
+	 * @ordered
+	 */
+	protected MessageItem onFailMessage;
+
+	/**
+	 * The default value of the '{@link #isHasSuccessMessage() <em>Has Success Message</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasSuccessMessage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_SUCCESS_MESSAGE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasSuccessMessage() <em>Has Success Message</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasSuccessMessage()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasSuccessMessage = HAS_SUCCESS_MESSAGE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getOnSuccessMessage() <em>On Success Message</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOnSuccessMessage()
+	 * @generated
+	 * @ordered
+	 */
+	protected MessageItem onSuccessMessage;
+
+	/**
+	 * The default value of the '{@link #isHasStartedMessage() <em>Has Started Message</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasStartedMessage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_STARTED_MESSAGE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasStartedMessage() <em>Has Started Message</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasStartedMessage()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasStartedMessage = HAS_STARTED_MESSAGE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getOnStartedMessage() <em>On Started Message</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOnStartedMessage()
+	 * @generated
+	 * @ordered
+	 */
+	protected MessageItem onStartedMessage;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ActionFunctionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ActionDSLPackage.Literals.ACTION_FUNCTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryActionGroup getActionGroup() {
+		if (actionGroup != null && actionGroup.eIsProxy()) {
+			InternalEObject oldActionGroup = (InternalEObject)actionGroup;
+			actionGroup = (FunctionLibraryActionGroup)eResolveProxy(oldActionGroup);
+			if (actionGroup != oldActionGroup) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_FUNCTION__ACTION_GROUP, oldActionGroup, actionGroup));
+			}
+		}
+		return actionGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryActionGroup basicGetActionGroup() {
+		return actionGroup;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setActionGroup(FunctionLibraryActionGroup newActionGroup) {
+		FunctionLibraryActionGroup oldActionGroup = actionGroup;
+		actionGroup = newActionGroup;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__ACTION_GROUP, oldActionGroup, actionGroup));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryCanExecute getCanExecute() {
+		if (canExecute != null && canExecute.eIsProxy()) {
+			InternalEObject oldCanExecute = (InternalEObject)canExecute;
+			canExecute = (FunctionLibraryCanExecute)eResolveProxy(oldCanExecute);
+			if (canExecute != oldCanExecute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_FUNCTION__CAN_EXECUTE, oldCanExecute, canExecute));
+			}
+		}
+		return canExecute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryCanExecute basicGetCanExecute() {
+		return canExecute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCanExecute(FunctionLibraryCanExecute newCanExecute) {
+		FunctionLibraryCanExecute oldCanExecute = canExecute;
+		canExecute = newCanExecute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__CAN_EXECUTE, oldCanExecute, canExecute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasExecuteImmediate() {
+		return hasExecuteImmediate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasExecuteImmediate(boolean newHasExecuteImmediate) {
+		boolean oldHasExecuteImmediate = hasExecuteImmediate;
+		hasExecuteImmediate = newHasExecuteImmediate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_IMMEDIATE, oldHasExecuteImmediate, hasExecuteImmediate));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasExecuteLater() {
+		return hasExecuteLater;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasExecuteLater(boolean newHasExecuteLater) {
+		boolean oldHasExecuteLater = hasExecuteLater;
+		hasExecuteLater = newHasExecuteLater;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_LATER, oldHasExecuteLater, hasExecuteLater));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryExecute getExecuteImmediate() {
+		if (executeImmediate != null && executeImmediate.eIsProxy()) {
+			InternalEObject oldExecuteImmediate = (InternalEObject)executeImmediate;
+			executeImmediate = (FunctionLibraryExecute)eResolveProxy(oldExecuteImmediate);
+			if (executeImmediate != oldExecuteImmediate) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_FUNCTION__EXECUTE_IMMEDIATE, oldExecuteImmediate, executeImmediate));
+			}
+		}
+		return executeImmediate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryExecute basicGetExecuteImmediate() {
+		return executeImmediate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExecuteImmediate(FunctionLibraryExecute newExecuteImmediate) {
+		FunctionLibraryExecute oldExecuteImmediate = executeImmediate;
+		executeImmediate = newExecuteImmediate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__EXECUTE_IMMEDIATE, oldExecuteImmediate, executeImmediate));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryExecute getExecuteLater() {
+		if (executeLater != null && executeLater.eIsProxy()) {
+			InternalEObject oldExecuteLater = (InternalEObject)executeLater;
+			executeLater = (FunctionLibraryExecute)eResolveProxy(oldExecuteLater);
+			if (executeLater != oldExecuteLater) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_FUNCTION__EXECUTE_LATER, oldExecuteLater, executeLater));
+			}
+		}
+		return executeLater;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FunctionLibraryExecute basicGetExecuteLater() {
+		return executeLater;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExecuteLater(FunctionLibraryExecute newExecuteLater) {
+		FunctionLibraryExecute oldExecuteLater = executeLater;
+		executeLater = newExecuteLater;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__EXECUTE_LATER, oldExecuteLater, executeLater));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasMessage() {
+		return hasMessage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasMessage(boolean newHasMessage) {
+		boolean oldHasMessage = hasMessage;
+		hasMessage = newHasMessage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__HAS_MESSAGE, oldHasMessage, hasMessage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MessageCategory getMessageCategory() {
+		if (messageCategory != null && messageCategory.eIsProxy()) {
+			InternalEObject oldMessageCategory = (InternalEObject)messageCategory;
+			messageCategory = (MessageCategory)eResolveProxy(oldMessageCategory);
+			if (messageCategory != oldMessageCategory) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_FUNCTION__MESSAGE_CATEGORY, oldMessageCategory, messageCategory));
+			}
+		}
+		return messageCategory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MessageCategory basicGetMessageCategory() {
+		return messageCategory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMessageCategory(MessageCategory newMessageCategory) {
+		MessageCategory oldMessageCategory = messageCategory;
+		messageCategory = newMessageCategory;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__MESSAGE_CATEGORY, oldMessageCategory, messageCategory));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MessageItem getOnFailMessage() {
+		if (onFailMessage != null && onFailMessage.eIsProxy()) {
+			InternalEObject oldOnFailMessage = (InternalEObject)onFailMessage;
+			onFailMessage = (MessageItem)eResolveProxy(oldOnFailMessage);
+			if (onFailMessage != oldOnFailMessage) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_FUNCTION__ON_FAIL_MESSAGE, oldOnFailMessage, onFailMessage));
+			}
+		}
+		return onFailMessage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MessageItem basicGetOnFailMessage() {
+		return onFailMessage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOnFailMessage(MessageItem newOnFailMessage) {
+		MessageItem oldOnFailMessage = onFailMessage;
+		onFailMessage = newOnFailMessage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__ON_FAIL_MESSAGE, oldOnFailMessage, onFailMessage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasSuccessMessage() {
+		return hasSuccessMessage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasSuccessMessage(boolean newHasSuccessMessage) {
+		boolean oldHasSuccessMessage = hasSuccessMessage;
+		hasSuccessMessage = newHasSuccessMessage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__HAS_SUCCESS_MESSAGE, oldHasSuccessMessage, hasSuccessMessage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MessageItem getOnSuccessMessage() {
+		if (onSuccessMessage != null && onSuccessMessage.eIsProxy()) {
+			InternalEObject oldOnSuccessMessage = (InternalEObject)onSuccessMessage;
+			onSuccessMessage = (MessageItem)eResolveProxy(oldOnSuccessMessage);
+			if (onSuccessMessage != oldOnSuccessMessage) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_FUNCTION__ON_SUCCESS_MESSAGE, oldOnSuccessMessage, onSuccessMessage));
+			}
+		}
+		return onSuccessMessage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MessageItem basicGetOnSuccessMessage() {
+		return onSuccessMessage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOnSuccessMessage(MessageItem newOnSuccessMessage) {
+		MessageItem oldOnSuccessMessage = onSuccessMessage;
+		onSuccessMessage = newOnSuccessMessage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__ON_SUCCESS_MESSAGE, oldOnSuccessMessage, onSuccessMessage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasStartedMessage() {
+		return hasStartedMessage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasStartedMessage(boolean newHasStartedMessage) {
+		boolean oldHasStartedMessage = hasStartedMessage;
+		hasStartedMessage = newHasStartedMessage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__HAS_STARTED_MESSAGE, oldHasStartedMessage, hasStartedMessage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MessageItem getOnStartedMessage() {
+		if (onStartedMessage != null && onStartedMessage.eIsProxy()) {
+			InternalEObject oldOnStartedMessage = (InternalEObject)onStartedMessage;
+			onStartedMessage = (MessageItem)eResolveProxy(oldOnStartedMessage);
+			if (onStartedMessage != oldOnStartedMessage) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ActionDSLPackage.ACTION_FUNCTION__ON_STARTED_MESSAGE, oldOnStartedMessage, onStartedMessage));
+			}
+		}
+		return onStartedMessage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MessageItem basicGetOnStartedMessage() {
+		return onStartedMessage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOnStartedMessage(MessageItem newOnStartedMessage) {
+		MessageItem oldOnStartedMessage = onStartedMessage;
+		onStartedMessage = newOnStartedMessage;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_FUNCTION__ON_STARTED_MESSAGE, oldOnStartedMessage, onStartedMessage));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_FUNCTION__ACTION_GROUP:
+				if (resolve) return getActionGroup();
+				return basicGetActionGroup();
+			case ActionDSLPackage.ACTION_FUNCTION__CAN_EXECUTE:
+				if (resolve) return getCanExecute();
+				return basicGetCanExecute();
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_IMMEDIATE:
+				return isHasExecuteImmediate();
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_LATER:
+				return isHasExecuteLater();
+			case ActionDSLPackage.ACTION_FUNCTION__EXECUTE_IMMEDIATE:
+				if (resolve) return getExecuteImmediate();
+				return basicGetExecuteImmediate();
+			case ActionDSLPackage.ACTION_FUNCTION__EXECUTE_LATER:
+				if (resolve) return getExecuteLater();
+				return basicGetExecuteLater();
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_MESSAGE:
+				return isHasMessage();
+			case ActionDSLPackage.ACTION_FUNCTION__MESSAGE_CATEGORY:
+				if (resolve) return getMessageCategory();
+				return basicGetMessageCategory();
+			case ActionDSLPackage.ACTION_FUNCTION__ON_FAIL_MESSAGE:
+				if (resolve) return getOnFailMessage();
+				return basicGetOnFailMessage();
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_SUCCESS_MESSAGE:
+				return isHasSuccessMessage();
+			case ActionDSLPackage.ACTION_FUNCTION__ON_SUCCESS_MESSAGE:
+				if (resolve) return getOnSuccessMessage();
+				return basicGetOnSuccessMessage();
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_STARTED_MESSAGE:
+				return isHasStartedMessage();
+			case ActionDSLPackage.ACTION_FUNCTION__ON_STARTED_MESSAGE:
+				if (resolve) return getOnStartedMessage();
+				return basicGetOnStartedMessage();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_FUNCTION__ACTION_GROUP:
+				setActionGroup((FunctionLibraryActionGroup)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__CAN_EXECUTE:
+				setCanExecute((FunctionLibraryCanExecute)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_IMMEDIATE:
+				setHasExecuteImmediate((Boolean)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_LATER:
+				setHasExecuteLater((Boolean)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__EXECUTE_IMMEDIATE:
+				setExecuteImmediate((FunctionLibraryExecute)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__EXECUTE_LATER:
+				setExecuteLater((FunctionLibraryExecute)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_MESSAGE:
+				setHasMessage((Boolean)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__MESSAGE_CATEGORY:
+				setMessageCategory((MessageCategory)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__ON_FAIL_MESSAGE:
+				setOnFailMessage((MessageItem)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_SUCCESS_MESSAGE:
+				setHasSuccessMessage((Boolean)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__ON_SUCCESS_MESSAGE:
+				setOnSuccessMessage((MessageItem)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_STARTED_MESSAGE:
+				setHasStartedMessage((Boolean)newValue);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__ON_STARTED_MESSAGE:
+				setOnStartedMessage((MessageItem)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_FUNCTION__ACTION_GROUP:
+				setActionGroup((FunctionLibraryActionGroup)null);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__CAN_EXECUTE:
+				setCanExecute((FunctionLibraryCanExecute)null);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_IMMEDIATE:
+				setHasExecuteImmediate(HAS_EXECUTE_IMMEDIATE_EDEFAULT);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_LATER:
+				setHasExecuteLater(HAS_EXECUTE_LATER_EDEFAULT);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__EXECUTE_IMMEDIATE:
+				setExecuteImmediate((FunctionLibraryExecute)null);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__EXECUTE_LATER:
+				setExecuteLater((FunctionLibraryExecute)null);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_MESSAGE:
+				setHasMessage(HAS_MESSAGE_EDEFAULT);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__MESSAGE_CATEGORY:
+				setMessageCategory((MessageCategory)null);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__ON_FAIL_MESSAGE:
+				setOnFailMessage((MessageItem)null);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_SUCCESS_MESSAGE:
+				setHasSuccessMessage(HAS_SUCCESS_MESSAGE_EDEFAULT);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__ON_SUCCESS_MESSAGE:
+				setOnSuccessMessage((MessageItem)null);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_STARTED_MESSAGE:
+				setHasStartedMessage(HAS_STARTED_MESSAGE_EDEFAULT);
+				return;
+			case ActionDSLPackage.ACTION_FUNCTION__ON_STARTED_MESSAGE:
+				setOnStartedMessage((MessageItem)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_FUNCTION__ACTION_GROUP:
+				return actionGroup != null;
+			case ActionDSLPackage.ACTION_FUNCTION__CAN_EXECUTE:
+				return canExecute != null;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_IMMEDIATE:
+				return hasExecuteImmediate != HAS_EXECUTE_IMMEDIATE_EDEFAULT;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_EXECUTE_LATER:
+				return hasExecuteLater != HAS_EXECUTE_LATER_EDEFAULT;
+			case ActionDSLPackage.ACTION_FUNCTION__EXECUTE_IMMEDIATE:
+				return executeImmediate != null;
+			case ActionDSLPackage.ACTION_FUNCTION__EXECUTE_LATER:
+				return executeLater != null;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_MESSAGE:
+				return hasMessage != HAS_MESSAGE_EDEFAULT;
+			case ActionDSLPackage.ACTION_FUNCTION__MESSAGE_CATEGORY:
+				return messageCategory != null;
+			case ActionDSLPackage.ACTION_FUNCTION__ON_FAIL_MESSAGE:
+				return onFailMessage != null;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_SUCCESS_MESSAGE:
+				return hasSuccessMessage != HAS_SUCCESS_MESSAGE_EDEFAULT;
+			case ActionDSLPackage.ACTION_FUNCTION__ON_SUCCESS_MESSAGE:
+				return onSuccessMessage != null;
+			case ActionDSLPackage.ACTION_FUNCTION__HAS_STARTED_MESSAGE:
+				return hasStartedMessage != HAS_STARTED_MESSAGE_EDEFAULT;
+			case ActionDSLPackage.ACTION_FUNCTION__ON_STARTED_MESSAGE:
+				return onStartedMessage != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (hasExecuteImmediate: ");
+		result.append(hasExecuteImmediate);
+		result.append(", hasExecuteLater: ");
+		result.append(hasExecuteLater);
+		result.append(", hasMessage: ");
+		result.append(hasMessage);
+		result.append(", hasSuccessMessage: ");
+		result.append(hasSuccessMessage);
+		result.append(", hasStartedMessage: ");
+		result.append(hasStartedMessage);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ActionFunctionImpl
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionLazyResolverImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionLazyResolverImpl.java
index 7239804..acaef61 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionLazyResolverImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionLazyResolverImpl.java
@@ -24,20 +24,15 @@
 
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3;
-
 import org.eclipse.osbp.xtext.action.ActionDSLPackage;
 import org.eclipse.osbp.xtext.action.ActionLazyResolver;
 
+import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Action Lazy Resolver</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
@@ -67,9 +62,7 @@
 	 * @generated
 	 */
 	public EObject eResolveProxy(final InternalEObject proxy) {
-		Resource _eResource = this.eResource();
-		ResourceSet _resourceSet = _eResource.getResourceSet();
-		return EcoreUtil3.resolve(proxy, _resourceSet);
+		return EcoreUtil3.resolve(proxy, this.eResource().getResourceSet());
 	}
 
 	/**
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionModelImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionModelImpl.java
index 596aa82..a65ce84 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionModelImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionModelImpl.java
@@ -16,6 +16,7 @@
 
 import java.util.Collection;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
@@ -23,6 +24,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
@@ -32,21 +34,34 @@
 import org.eclipse.osbp.xtext.action.ActionModel;
 import org.eclipse.osbp.xtext.action.ActionPackage;
 
+import org.eclipse.xtext.xtype.XImportSection;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Action Model</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionModelImpl#getImportSection <em>Import Section</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionModelImpl#getPackages <em>Packages</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
 public class ActionModelImpl extends MinimalEObjectImpl.Container implements ActionModel {
 	/**
+	 * The cached value of the '{@link #getImportSection() <em>Import Section</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImportSection()
+	 * @generated
+	 * @ordered
+	 */
+	protected XImportSection importSection;
+
+	/**
 	 * The cached value of the '{@link #getPackages() <em>Packages</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -80,6 +95,49 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public XImportSection getImportSection() {
+		return importSection;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetImportSection(XImportSection newImportSection, NotificationChain msgs) {
+		XImportSection oldImportSection = importSection;
+		importSection = newImportSection;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_MODEL__IMPORT_SECTION, oldImportSection, newImportSection);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setImportSection(XImportSection newImportSection) {
+		if (newImportSection != importSection) {
+			NotificationChain msgs = null;
+			if (importSection != null)
+				msgs = ((InternalEObject)importSection).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ActionDSLPackage.ACTION_MODEL__IMPORT_SECTION, null, msgs);
+			if (newImportSection != null)
+				msgs = ((InternalEObject)newImportSection).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ActionDSLPackage.ACTION_MODEL__IMPORT_SECTION, null, msgs);
+			msgs = basicSetImportSection(newImportSection, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_MODEL__IMPORT_SECTION, newImportSection, newImportSection));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EList<ActionPackage> getPackages() {
 		if (packages == null) {
 			packages = new EObjectContainmentEList<ActionPackage>(ActionPackage.class, this, ActionDSLPackage.ACTION_MODEL__PACKAGES);
@@ -95,6 +153,8 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_MODEL__IMPORT_SECTION:
+				return basicSetImportSection(null, msgs);
 			case ActionDSLPackage.ACTION_MODEL__PACKAGES:
 				return ((InternalEList<?>)getPackages()).basicRemove(otherEnd, msgs);
 		}
@@ -109,6 +169,8 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_MODEL__IMPORT_SECTION:
+				return getImportSection();
 			case ActionDSLPackage.ACTION_MODEL__PACKAGES:
 				return getPackages();
 		}
@@ -124,6 +186,9 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_MODEL__IMPORT_SECTION:
+				setImportSection((XImportSection)newValue);
+				return;
 			case ActionDSLPackage.ACTION_MODEL__PACKAGES:
 				getPackages().clear();
 				getPackages().addAll((Collection<? extends ActionPackage>)newValue);
@@ -140,6 +205,9 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_MODEL__IMPORT_SECTION:
+				setImportSection((XImportSection)null);
+				return;
 			case ActionDSLPackage.ACTION_MODEL__PACKAGES:
 				getPackages().clear();
 				return;
@@ -155,6 +223,8 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_MODEL__IMPORT_SECTION:
+				return importSection != null;
 			case ActionDSLPackage.ACTION_MODEL__PACKAGES:
 				return packages != null && !packages.isEmpty();
 		}
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionPackageImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionPackageImpl.java
index 0698b17..13c1f76 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionPackageImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionPackageImpl.java
@@ -28,6 +28,7 @@
 
 import org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl;
 
+import org.eclipse.osbp.xtext.action.ActionCommand;
 import org.eclipse.osbp.xtext.action.ActionDSLPackage;
 import org.eclipse.osbp.xtext.action.ActionPackage;
 import org.eclipse.osbp.xtext.action.ActionToolbar;
@@ -38,15 +39,26 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionPackageImpl#getCommands <em>Commands</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionPackageImpl#getToolbars <em>Toolbars</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
 public class ActionPackageImpl extends LPackageImpl implements ActionPackage {
 	/**
+	 * The cached value of the '{@link #getCommands() <em>Commands</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCommands()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ActionCommand> commands;
+
+	/**
 	 * The cached value of the '{@link #getToolbars() <em>Toolbars</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -80,6 +92,18 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EList<ActionCommand> getCommands() {
+		if (commands == null) {
+			commands = new EObjectContainmentEList<ActionCommand>(ActionCommand.class, this, ActionDSLPackage.ACTION_PACKAGE__COMMANDS);
+		}
+		return commands;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EList<ActionToolbar> getToolbars() {
 		if (toolbars == null) {
 			toolbars = new EObjectContainmentEList<ActionToolbar>(ActionToolbar.class, this, ActionDSLPackage.ACTION_PACKAGE__TOOLBARS);
@@ -95,6 +119,8 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_PACKAGE__COMMANDS:
+				return ((InternalEList<?>)getCommands()).basicRemove(otherEnd, msgs);
 			case ActionDSLPackage.ACTION_PACKAGE__TOOLBARS:
 				return ((InternalEList<?>)getToolbars()).basicRemove(otherEnd, msgs);
 		}
@@ -109,6 +135,8 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_PACKAGE__COMMANDS:
+				return getCommands();
 			case ActionDSLPackage.ACTION_PACKAGE__TOOLBARS:
 				return getToolbars();
 		}
@@ -124,6 +152,10 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_PACKAGE__COMMANDS:
+				getCommands().clear();
+				getCommands().addAll((Collection<? extends ActionCommand>)newValue);
+				return;
 			case ActionDSLPackage.ACTION_PACKAGE__TOOLBARS:
 				getToolbars().clear();
 				getToolbars().addAll((Collection<? extends ActionToolbar>)newValue);
@@ -140,6 +172,9 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_PACKAGE__COMMANDS:
+				getCommands().clear();
+				return;
 			case ActionDSLPackage.ACTION_PACKAGE__TOOLBARS:
 				getToolbars().clear();
 				return;
@@ -155,6 +190,8 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case ActionDSLPackage.ACTION_PACKAGE__COMMANDS:
+				return commands != null && !commands.isEmpty();
 			case ActionDSLPackage.ACTION_PACKAGE__TOOLBARS:
 				return toolbars != null && !toolbars.isEmpty();
 		}
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionParameterImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionParameterImpl.java
index 1ea2509..e11761a 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionParameterImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionParameterImpl.java
@@ -32,10 +32,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionParameterImpl#getParameter <em>Parameter</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionReportImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionReportImpl.java
index 109086b..1c15447 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionReportImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionReportImpl.java
@@ -30,10 +30,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionReportImpl#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionSelectWorkloadImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionSelectWorkloadImpl.java
index c972e8c..169f051 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionSelectWorkloadImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionSelectWorkloadImpl.java
@@ -30,10 +30,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionSelectWorkloadImpl#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionTaskImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionTaskImpl.java
index 045bdc1..1a7ea22 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionTaskImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionTaskImpl.java
@@ -30,10 +30,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionTaskImpl#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionToolbarImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionToolbarImpl.java
index adebd3b..ca59046 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionToolbarImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionToolbarImpl.java
@@ -39,12 +39,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionToolbarImpl#isDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionToolbarImpl#getDescriptionValue <em>Description Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionToolbarImpl#getActions <em>Actions</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionUIImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionUIImpl.java
new file mode 100644
index 0000000..0cf1aa7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionUIImpl.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from ActionDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.action.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.action.ActionDSLPackage;
+import org.eclipse.osbp.xtext.action.ActionUI;
+import org.eclipse.osbp.xtext.action.UIActionEnum;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Action UI</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionUIImpl#getAction <em>Action</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ActionUIImpl extends ActionLazyResolverImpl implements ActionUI {
+	/**
+	 * The default value of the '{@link #getAction() <em>Action</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAction()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final UIActionEnum ACTION_EDEFAULT = UIActionEnum.NEXT_PART;
+
+	/**
+	 * The cached value of the '{@link #getAction() <em>Action</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAction()
+	 * @generated
+	 * @ordered
+	 */
+	protected UIActionEnum action = ACTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ActionUIImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ActionDSLPackage.Literals.ACTION_UI;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public UIActionEnum getAction() {
+		return action;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAction(UIActionEnum newAction) {
+		UIActionEnum oldAction = action;
+		action = newAction == null ? ACTION_EDEFAULT : newAction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ActionDSLPackage.ACTION_UI__ACTION, oldAction, action));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_UI__ACTION:
+				return getAction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_UI__ACTION:
+				setAction((UIActionEnum)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_UI__ACTION:
+				setAction(ACTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ActionDSLPackage.ACTION_UI__ACTION:
+				return action != ACTION_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (action: ");
+		result.append(action);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ActionUIImpl
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionWorkflowImpl.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionWorkflowImpl.java
index 3db1632..fcc5143 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionWorkflowImpl.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/impl/ActionWorkflowImpl.java
@@ -30,10 +30,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.action.impl.ActionWorkflowImpl#getAction <em>Action</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/util/ActionDSLAdapterFactory.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/util/ActionDSLAdapterFactory.java
index 16adbed..3af3518 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/util/ActionDSLAdapterFactory.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/util/ActionDSLAdapterFactory.java
@@ -99,6 +99,10 @@
 				return createActionBaseAdapter();
 			}
 			@Override
+			public Adapter caseActionCommand(ActionCommand object) {
+				return createActionCommandAdapter();
+			}
+			@Override
 			public Adapter caseActionToolbar(ActionToolbar object) {
 				return createActionToolbarAdapter();
 			}
@@ -139,8 +143,12 @@
 				return createActionDatainterchangeAdapter();
 			}
 			@Override
-			public Adapter caseActionGeneric(ActionGeneric object) {
-				return createActionGenericAdapter();
+			public Adapter caseActionUI(ActionUI object) {
+				return createActionUIAdapter();
+			}
+			@Override
+			public Adapter caseActionFunction(ActionFunction object) {
+				return createActionFunctionAdapter();
 			}
 			@Override
 			public Adapter caseActionParameter(ActionParameter object) {
@@ -231,6 +239,20 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.action.ActionCommand <em>Action Command</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.osbp.xtext.action.ActionCommand
+	 * @generated
+	 */
+	public Adapter createActionCommandAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.action.ActionToolbar <em>Action Toolbar</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
@@ -371,16 +393,30 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.action.ActionGeneric <em>Action Generic</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.action.ActionUI <em>Action UI</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.osbp.xtext.action.ActionGeneric
+	 * @see org.eclipse.osbp.xtext.action.ActionUI
 	 * @generated
 	 */
-	public Adapter createActionGenericAdapter() {
+	public Adapter createActionUIAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.action.ActionFunction <em>Action Function</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.osbp.xtext.action.ActionFunction
+	 * @generated
+	 */
+	public Adapter createActionFunctionAdapter() {
 		return null;
 	}
 
diff --git a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/util/ActionDSLSwitch.java b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/util/ActionDSLSwitch.java
index 0592990..1519ec4 100644
--- a/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/util/ActionDSLSwitch.java
+++ b/org.eclipse.osbp.xtext.action/emf-gen/org/eclipse/osbp/xtext/action/util/ActionDSLSwitch.java
@@ -62,7 +62,7 @@
 	 * Checks whether this is a switch for the given package.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @parameter ePackage the package in question.
+	 * @param ePackage the package in question.
 	 * @return whether this is a switch for the given package.
 	 * @generated
 	 */
@@ -108,6 +108,14 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case ActionDSLPackage.ACTION_COMMAND: {
+				ActionCommand actionCommand = (ActionCommand)theEObject;
+				T result = caseActionCommand(actionCommand);
+				if (result == null) result = caseActionBase(actionCommand);
+				if (result == null) result = caseActionLazyResolver(actionCommand);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case ActionDSLPackage.ACTION_TOOLBAR: {
 				ActionToolbar actionToolbar = (ActionToolbar)theEObject;
 				T result = caseActionToolbar(actionToolbar);
@@ -187,11 +195,19 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case ActionDSLPackage.ACTION_GENERIC: {
-				ActionGeneric actionGeneric = (ActionGeneric)theEObject;
-				T result = caseActionGeneric(actionGeneric);
-				if (result == null) result = caseActionType(actionGeneric);
-				if (result == null) result = caseActionLazyResolver(actionGeneric);
+			case ActionDSLPackage.ACTION_UI: {
+				ActionUI actionUI = (ActionUI)theEObject;
+				T result = caseActionUI(actionUI);
+				if (result == null) result = caseActionType(actionUI);
+				if (result == null) result = caseActionLazyResolver(actionUI);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ActionDSLPackage.ACTION_FUNCTION: {
+				ActionFunction actionFunction = (ActionFunction)theEObject;
+				T result = caseActionFunction(actionFunction);
+				if (result == null) result = caseActionType(actionFunction);
+				if (result == null) result = caseActionLazyResolver(actionFunction);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -268,6 +284,21 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Action Command</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>Action Command</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseActionCommand(ActionCommand object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Action Toolbar</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
@@ -418,17 +449,32 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Action Generic</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Action UI</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>Action Generic</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Action UI</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseActionGeneric(ActionGeneric object) {
+	public T caseActionUI(ActionUI object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Action Function</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>Action Function</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseActionFunction(ActionFunction object) {
 		return null;
 	}
 
diff --git a/org.eclipse.osbp.xtext.action/model/ActionDSL.xcore b/org.eclipse.osbp.xtext.action/model/ActionDSL.xcore
index 1a9f8ab..ce7134e 100644
--- a/org.eclipse.osbp.xtext.action/model/ActionDSL.xcore
+++ b/org.eclipse.osbp.xtext.action/model/ActionDSL.xcore
@@ -1,6 +1,10 @@
 @GenModel(fileExtensions="action")
 @GenModel(modelName="ActionDSL")
 @GenModel(prefix="ActionDSL")
+// force bigModel == false
+@GenModel(loadInitialization="false")
+@GenModel(literalsInterface="true")
+
 @GenModel(copyrightText="Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Public License v1.0
@@ -21,15 +25,19 @@
 
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.emf.ecore.InternalEObject
-import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
 import org.eclipse.osbp.dsl.semantic.common.types.LPackage
 import org.eclipse.osbp.xtext.datainterchange.DataInterchange
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryActionGroup
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryCanExecute
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryExecute
 import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryParameter
+import org.eclipse.osbp.xtext.messagedsl.MessageCategory
 import org.eclipse.osbp.xtext.messagedsl.MessageItem
+import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3
+import org.eclipse.xtext.xtype.XImportSection
 
 class ActionModel{
+	contains XImportSection importSection
 	contains ActionPackage[] packages
 }
 
@@ -42,6 +50,7 @@
 }
 
 class ActionPackage extends LPackage {
+	contains ActionCommand[] commands
 	contains ActionToolbar[] toolbars
 }
 
@@ -49,6 +58,14 @@
 	String name
 }
 
+class ActionCommand extends ActionBase{
+	contains ActionType actionType
+	boolean hasKeyBinding
+	String keyBinding
+	boolean hasDescription
+	String description
+}
+
 class ActionToolbar extends ActionBase{
 	boolean description
 	String descriptionValue
@@ -59,11 +76,7 @@
 	boolean description
 	String descriptionValue
 	String iconURI
-	refers FunctionLibraryGroup group
-	refers FunctionLibraryFunction canexecute
-	refers FunctionLibraryFunction executeparameter
-	contains ActionType actionType
-	refers MessageItem message
+	refers ActionCommand command
 }
 
 interface ActionType extends ActionLazyResolver{
@@ -98,8 +111,24 @@
 	refers DataInterchange dataRef
 }
 
-class ActionGeneric extends ActionType {
-	String action
+class ActionUI extends ActionType {
+	UIActionEnum action
+}
+
+class ActionFunction extends ActionType {
+	refers FunctionLibraryActionGroup actionGroup
+	refers FunctionLibraryCanExecute canExecute
+	boolean hasExecuteImmediate
+	boolean hasExecuteLater
+	refers FunctionLibraryExecute executeImmediate
+	refers FunctionLibraryExecute executeLater
+	boolean hasMessage
+	refers MessageCategory messageCategory
+	refers MessageItem onFailMessage
+	boolean hasSuccessMessage
+	refers MessageItem onSuccessMessage
+	boolean hasStartedMessage
+	refers MessageItem onStartedMessage
 }
 
 class ActionParameter extends ActionBase{
@@ -153,3 +182,8 @@
 	DATAINTERCHANGE_ACTION_IMPORT as 'Import'
 	DATAINTERCHANGE_ACTION_EXPORT as 'Export'
 }	 
+
+enum UIActionEnum {
+	NEXT_PART as 'NextPart'
+	PREVIOUS_PART as 'PreviousPart'
+}
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/AbstractActionDSLRuntimeModule.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/AbstractActionDSLRuntimeModule.java
index a0f0cc3..a07ec58 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/AbstractActionDSLRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/AbstractActionDSLRuntimeModule.java
@@ -10,22 +10,75 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action;
 
-import java.util.Properties;
-
-import org.eclipse.xtext.Constants;
-import org.eclipse.xtext.service.DefaultRuntimeModule;
-
 import com.google.inject.Binder;
+import com.google.inject.Provider;
 import com.google.inject.name.Names;
+import java.util.Properties;
+import org.eclipse.osbp.xtext.action.jvmmodel.ActionDSLJvmModelInferrer;
+import org.eclipse.osbp.xtext.action.parser.antlr.ActionDSLAntlrTokenFileProvider;
+import org.eclipse.osbp.xtext.action.parser.antlr.ActionDSLParser;
+import org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLLexer;
+import org.eclipse.osbp.xtext.action.scoping.ActionDSLScopeProvider;
+import org.eclipse.osbp.xtext.action.serializer.ActionDSLSemanticSequencer;
+import org.eclipse.osbp.xtext.action.serializer.ActionDSLSyntacticSequencer;
+import org.eclipse.osbp.xtext.action.services.ActionDSLGrammarAccess;
+import org.eclipse.osbp.xtext.action.validation.ActionDSLValidator;
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.parser.IParser;
+import org.eclipse.xtext.parser.ITokenToStringConverter;
+import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider;
+import org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+import org.eclipse.xtext.parser.antlr.ITokenDefProvider;
+import org.eclipse.xtext.parser.antlr.Lexer;
+import org.eclipse.xtext.parser.antlr.LexerBindings;
+import org.eclipse.xtext.parser.antlr.LexerProvider;
+import org.eclipse.xtext.resource.IContainer;
+import org.eclipse.xtext.resource.ILocationInFileProvider;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.containers.IAllContainersState;
+import org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider;
+import org.eclipse.xtext.resource.containers.StateBasedContainerManager;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
+import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions;
+import org.eclipse.xtext.scoping.IGlobalScopeProvider;
+import org.eclipse.xtext.scoping.IScopeProvider;
+import org.eclipse.xtext.scoping.IgnoreCaseLinking;
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
+import org.eclipse.xtext.serializer.ISerializer;
+import org.eclipse.xtext.serializer.impl.Serializer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer;
+import org.eclipse.xtext.service.SingletonBinding;
+import org.eclipse.xtext.validation.IResourceValidator;
+import org.eclipse.xtext.xbase.annotations.DefaultXbaseWithAnnotationsRuntimeModule;
+import org.eclipse.xtext.xbase.annotations.validation.DerivedStateAwareResourceValidator;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer;
+import org.eclipse.xtext.xbase.jvmmodel.JvmLocationInFileProvider;
+import org.eclipse.xtext.xbase.scoping.XImportSectionNamespaceScopeProvider;
+import org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider;
+import org.eclipse.xtext.xbase.scoping.batch.IBatchScopeProvider;
+import org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver;
+import org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver;
+import org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareBatchTypeResolver;
+import org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver;
+import org.eclipse.xtext.xbase.validation.FeatureNameValidator;
+import org.eclipse.xtext.xbase.validation.LogicalContainerAwareFeatureNameValidator;
 
 /**
- * Manual modifications go to {org.eclipse.osbp.xtext.action.ActionDSLRuntimeModule}
+ * Manual modifications go to {@link ActionDSLRuntimeModule}.
  */
- @SuppressWarnings("all")
-public abstract class AbstractActionDSLRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractActionDSLRuntimeModule extends DefaultXbaseWithAnnotationsRuntimeModule {
 
 	protected Properties properties = null;
 
@@ -44,309 +97,147 @@
 			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("action");
 	}
 	
-	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
-		return org.eclipse.osbp.xtext.action.serializer.ActionDSLSemanticSequencer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
-		return org.eclipse.osbp.xtext.action.serializer.ActionDSLSyntacticSequencer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
-	public Class<? extends org.eclipse.xtext.serializer.ISerializer> bindISerializer() {
-		return org.eclipse.xtext.serializer.impl.Serializer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public Class<? extends org.eclipse.xtext.parser.IParser> bindIParser() {
-		return org.eclipse.osbp.xtext.action.parser.antlr.ActionDSLParser.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
-		return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
-		return org.eclipse.osbp.xtext.action.parser.antlr.ActionDSLAntlrTokenFileProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
-		return org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLLexer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public com.google.inject.Provider<org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLLexer> provideInternalActionDSLLexer() {
-		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLLexer.class);
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public void configureRuntimeLexer(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLLexer.class);
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
-		return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public Class<? extends org.eclipse.xtext.parser.antlr.IUnorderedGroupHelper> bindIUnorderedGroupHelper() {
-		return org.eclipse.xtext.parser.antlr.UnorderedGroupHelper.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.validation.ValidatorFragment
-	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.xtext.action.validation.ActionDSLValidator> bindActionDSLValidator() {
-		return org.eclipse.osbp.xtext.action.validation.ActionDSLValidator.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
-	public void configureIgnoreCaseLinking(com.google.inject.Binder binder) {
-		binder.bindConstant().annotatedWith(org.eclipse.xtext.scoping.IgnoreCaseLinking.class).to(false);
-	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
-		return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
-		return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public void configureIResourceDescriptions(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
-	}
-
-	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
-	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
-	}
-
-	// contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
-	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
-		return org.eclipse.osbp.xtext.action.formatting.ActionDSLFormatter.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public org.eclipse.xtext.common.types.TypesFactory bindTypesFactoryToInstance() {
-		return org.eclipse.xtext.common.types.TypesFactory.eINSTANCE;
-	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
-		return org.eclipse.xtext.common.types.access.ClasspathTypeProviderFactory.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
-	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
-		return org.eclipse.xtext.common.types.xtext.ClasspathBasedTypeScopeProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.interpreter.IEvaluationContext> bindIEvaluationContext() {
-		return org.eclipse.xtext.xbase.interpreter.impl.DefaultEvaluationContext.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.interpreter.IExpressionInterpreter> bindIExpressionInterpreter() {
-		return org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameConverter> bindIQualifiedNameConverter() {
-		return org.eclipse.xtext.xbase.XbaseQualifiedNameConverter.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
-		return org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.conversion.IValueConverterService> bindIValueConverterService() {
-		return org.eclipse.xtext.xbase.conversion.XbaseValueConverterService.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
-		return org.eclipse.xtext.xbase.scoping.batch.IBatchScopeProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public void configureLinkingIScopeProvider(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(org.eclipse.xtext.linking.LinkingScopeProviderBinding.class).to(org.eclipse.xtext.xbase.scoping.batch.IBatchScopeProvider.class);
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public void configureSerializerIScopeProvider(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class).to(org.eclipse.xtext.xbase.serializer.SerializerScopeProvider.class);
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.xbase.scoping.XbaseImportedNamespaceScopeProvider.class);
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
-		return org.eclipse.xtext.xbase.linking.XbaseLazyLinker.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
-		return org.eclipse.xtext.xbase.resource.BatchLinkableResource.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator> bindJvmTypeReferencesValidator() {
-		return org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider> bindIdentifiableSimpleNameProvider() {
-		return org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.resource.IDerivedStateComputer> bindIDerivedStateComputer() {
-		return org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.resource.IResourceDescription.Manager> bindIResourceDescription$Manager() {
-		return org.eclipse.xtext.resource.DerivedStateAwareResourceDescriptionManager.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
-		return org.eclipse.xtext.xbase.compiler.JvmModelGenerator.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public org.eclipse.xtext.xtype.XtypeFactory bindXtypeFactoryToInstance() {
-		return org.eclipse.xtext.xtype.XtypeFactory.eINSTANCE;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.debug.IStratumBreakpointSupport> bindIStratumBreakpointSupport() {
-		return org.eclipse.xtext.xbase.debug.XbaseStratumBreakpointSupport.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.generator.LineSeparatorHarmonizer> bindLineSeparatorHarmonizer() {
-		return org.eclipse.xtext.xbase.compiler.output.TraceAwarePostProcessor.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
-		return org.eclipse.xtext.xbase.resource.XbaseResourceDescriptionStrategy.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.validation.SeverityConverter> bindSeverityConverter() {
-		return org.eclipse.xtext.xbase.validation.XbaseSeverityConverter.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.validation.ConfigurableIssueCodesProvider> bindConfigurableIssueCodesProvider() {
-		return org.eclipse.xtext.xbase.validation.XbaseConfigurableIssueCodes.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.resource.EObjectAtOffsetHelper> bindEObjectAtOffsetHelper() {
-		return org.eclipse.xtext.xbase.linking.BrokenConstructorCallAwareEObjectAtOffsetHelper.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.validation.CancelableDiagnostician> bindCancelableDiagnostician() {
-		return org.eclipse.xtext.xbase.validation.XbaseDiagnostician.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.scoping.featurecalls.StaticImplicitMethodsFeatureForTypeProvider.ExtensionClassNameProvider> bindStaticImplicitMethodsFeatureForTypeProvider$ExtensionClassNameProvider() {
-		return org.eclipse.xtext.xbase.scoping.batch.ImplicitlyImportedTypesAdapter.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtend.lib.macro.file.MutableFileSystemSupport> bindMutableFileSystemSupport() {
-		return org.eclipse.xtext.xbase.file.JavaIOFileSystemSupport.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtend.lib.macro.file.FileLocations> bindFileLocations() {
-		return org.eclipse.xtext.xbase.file.FileLocationsImpl.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends com.google.inject.Provider<org.eclipse.xtext.xbase.file.WorkspaceConfig>> provideWorkspaceConfig() {
-		return org.eclipse.xtext.xbase.file.RuntimeWorkspaceConfigProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.typesystem.computation.ITypeComputer> bindITypeComputer() {
-		return org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
-		return org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider> bindILinkingDiagnosticMessageProvider() {
-		return org.eclipse.xtext.xbase.annotations.validation.UnresolvedAnnotationTypeAwareMessageProducer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.resource.ILocationInFileProvider> bindILocationInFileProvider() {
-		return org.eclipse.xtext.xbase.jvmmodel.JvmLocationInFileProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
-		return org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.validation.FeatureNameValidator> bindFeatureNameValidator() {
-		return org.eclipse.xtext.xbase.validation.LogicalContainerAwareFeatureNameValidator.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver> bindDefaultBatchTypeResolver() {
-		return org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareBatchTypeResolver.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver> bindDefaultReentrantTypeResolver() {
-		return org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.validation.IResourceValidator> bindIResourceValidator() {
-		return org.eclipse.xtext.xbase.annotations.validation.DerivedStateAwareResourceValidator.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
-	public Class<? extends org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer> bindIJvmModelInferrer() {
-		return org.eclipse.osbp.xtext.action.jvmmodel.ActionDSLJvmModelInferrer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
-	public java.lang.ClassLoader bindClassLoaderToInstance() {
+	// contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
+	public ClassLoader bindClassLoaderToInstance() {
 		return getClass().getClassLoader();
 	}
-
-	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
-	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
-		return org.eclipse.osbp.xtext.action.services.ActionDSLGrammarAccess.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
+	public Class<? extends IGrammarAccess> bindIGrammarAccess() {
+		return ActionDSLGrammarAccess.class;
 	}
-
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISemanticSequencer> bindISemanticSequencer() {
+		return ActionDSLSemanticSequencer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISyntacticSequencer> bindISyntacticSequencer() {
+		return ActionDSLSyntacticSequencer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISerializer> bindISerializer() {
+		return Serializer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IParser> bindIParser() {
+		return ActionDSLParser.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends ITokenToStringConverter> bindITokenToStringConverter() {
+		return AntlrTokenToStringConverter.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+		return ActionDSLAntlrTokenFileProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends Lexer> bindLexer() {
+		return InternalActionDSLLexer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends ITokenDefProvider> bindITokenDefProvider() {
+		return AntlrTokenDefProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Provider<? extends InternalActionDSLLexer> provideInternalActionDSLLexer() {
+		return LexerProvider.create(InternalActionDSLLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureRuntimeLexer(Binder binder) {
+		binder.bind(Lexer.class)
+			.annotatedWith(Names.named(LexerBindings.RUNTIME))
+			.to(InternalActionDSLLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2
+	@SingletonBinding(eager=true)
+	public Class<? extends ActionDSLValidator> bindActionDSLValidator() {
+		return ActionDSLValidator.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public Class<? extends IBatchScopeProvider> bindIBatchScopeProvider() {
+		return ActionDSLScopeProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public void configureIScopeProviderDelegate(Binder binder) {
+		binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(XImportSectionNamespaceScopeProvider.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public void configureIgnoreCaseLinking(Binder binder) {
+		binder.bindConstant().annotatedWith(IgnoreCaseLinking.class).to(false);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends IContainer.Manager> bindIContainer$Manager() {
+		return StateBasedContainerManager.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends IAllContainersState.Provider> bindIAllContainersState$Provider() {
+		return ResourceSetBasedAllContainersStateProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public void configureIResourceDescriptions(Binder binder) {
+		binder.bind(IResourceDescriptions.class).to(ResourceSetBasedResourceDescriptions.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public void configureIResourceDescriptionsPersisted(Binder binder) {
+		binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(ResourceSetBasedResourceDescriptions.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return XbaseQualifiedNameProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends ILocationInFileProvider> bindILocationInFileProvider() {
+		return JvmLocationInFileProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return TypesAwareDefaultGlobalScopeProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends FeatureNameValidator> bindFeatureNameValidator() {
+		return LogicalContainerAwareFeatureNameValidator.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends DefaultBatchTypeResolver> bindDefaultBatchTypeResolver() {
+		return LogicalContainerAwareBatchTypeResolver.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends DefaultReentrantTypeResolver> bindDefaultReentrantTypeResolver() {
+		return LogicalContainerAwareReentrantTypeResolver.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IResourceValidator> bindIResourceValidator() {
+		return DerivedStateAwareResourceValidator.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.xbase.XbaseGeneratorFragment2
+	public Class<? extends IJvmModelInferrer> bindIJvmModelInferrer() {
+		return ActionDSLJvmModelInferrer.class;
+	}
+	
 }
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/ActionDSL.xtextbin b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/ActionDSL.xtextbin
new file mode 100644
index 0000000..9fb3a39
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/ActionDSL.xtextbin
Binary files differ
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/ActionDSLStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/ActionDSLStandaloneSetupGenerated.java
index 354f9ba..ed1e747 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/ActionDSLStandaloneSetupGenerated.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/ActionDSLStandaloneSetupGenerated.java
@@ -10,24 +10,26 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
-package org.eclipse.osbp.xtext.action;
 
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.xtext.ISetup;
-import org.eclipse.emf.ecore.resource.Resource;
+package org.eclipse.osbp.xtext.action;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.xtext.oxtype.OXtypeStandaloneSetup;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.xtext.resource.IResourceFactory;
+import org.eclipse.xtext.resource.IResourceServiceProvider;
 
-/**
- * Generated from StandaloneSetup.xpt!
- */
 @SuppressWarnings("all")
 public class ActionDSLStandaloneSetupGenerated implements ISetup {
 
+	@Override
 	public Injector createInjectorAndDoEMFRegistration() {
-		org.eclipse.xtext.xbase.annotations.XbaseWithAnnotationsStandaloneSetup.doSetup();
+		OXtypeStandaloneSetup.doSetup();
 
 		Injector injector = createInjector();
 		register(injector);
@@ -35,18 +37,14 @@
 	}
 	
 	public Injector createInjector() {
-		return Guice.createInjector(new org.eclipse.osbp.xtext.action.ActionDSLRuntimeModule());
+		return Guice.createInjector(new ActionDSLRuntimeModule());
 	}
 	
 	public void register(Injector injector) {
-
-		org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
-		org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
-		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("action", resourceFactory);
-		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("action", serviceProvider);
+		IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class);
+		IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class);
 		
-
-
-
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("action", resourceFactory);
+		IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("action", serviceProvider);
 	}
 }
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/ActionDSLAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/ActionDSLAntlrTokenFileProvider.java
index 6438a35..aebf0c5 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/ActionDSLAntlrTokenFileProvider.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/ActionDSLAntlrTokenFileProvider.java
@@ -10,16 +10,20 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action.parser.antlr;
 
 import java.io.InputStream;
 import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
 
 public class ActionDSLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
-	
+
+	@Override
 	public InputStream getAntlrTokenFile() {
 		ClassLoader classLoader = getClass().getClassLoader();
-    	return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.tokens");
+		return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.tokens");
 	}
 }
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/ActionDSLParser.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/ActionDSLParser.java
index fa7d8b3..2748d37 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/ActionDSLParser.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/ActionDSLParser.java
@@ -10,40 +10,44 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action.parser.antlr;
 
 import com.google.inject.Inject;
-
-import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLParser;
 import org.eclipse.osbp.xtext.action.services.ActionDSLGrammarAccess;
+import org.eclipse.xtext.parser.antlr.AbstractAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
 
-public class ActionDSLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
-	
+public class ActionDSLParser extends AbstractAntlrParser {
+
 	@Inject
 	private ActionDSLGrammarAccess grammarAccess;
-	
+
 	@Override
 	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
 		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
 	}
 	
+
 	@Override
-	protected org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLParser createParser(XtextTokenStream stream) {
-		return new org.eclipse.osbp.xtext.action.parser.antlr.internal.InternalActionDSLParser(stream, getGrammarAccess());
+	protected InternalActionDSLParser createParser(XtextTokenStream stream) {
+		return new InternalActionDSLParser(stream, getGrammarAccess());
 	}
-	
+
 	@Override 
 	protected String getDefaultRuleName() {
 		return "ActionModel";
 	}
-	
+
 	public ActionDSLGrammarAccess getGrammarAccess() {
 		return this.grammarAccess;
 	}
-	
+
 	public void setGrammarAccess(ActionDSLGrammarAccess grammarAccess) {
 		this.grammarAccess = grammarAccess;
 	}
-	
 }
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g
index 606e86b..1692134 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g
@@ -10,12 +10,14 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 grammar InternalActionDSL;
 
 options {
 	superClass=AbstractInternalAntlrParser;
-	
 }
 
 @lexer::header {
@@ -27,7 +29,7 @@
 }
 
 @parser::header {
-package org.eclipse.osbp.xtext.action.parser.antlr.internal; 
+package org.eclipse.osbp.xtext.action.parser.antlr.internal;
 
 import org.eclipse.xtext.*;
 import org.eclipse.xtext.parser.*;
@@ -46,7720 +48,8474 @@
 @parser::members {
 
  	private ActionDSLGrammarAccess grammarAccess;
- 	
+
     public InternalActionDSLParser(TokenStream input, ActionDSLGrammarAccess grammarAccess) {
         this(input);
         this.grammarAccess = grammarAccess;
         registerRules(grammarAccess.getGrammar());
     }
-    
+
     @Override
     protected String getFirstRuleName() {
-    	return "ActionModel";	
+    	return "ActionModel";
    	}
-   	
+
    	@Override
    	protected ActionDSLGrammarAccess getGrammarAccess() {
    		return grammarAccess;
    	}
+
 }
 
-@rulecatch { 
-    catch (RecognitionException re) { 
-        recover(input,re); 
+@rulecatch {
+    catch (RecognitionException re) {
+        recover(input,re);
         appendSkippedTokens();
-    } 
+    }
 }
 
-
-
-
 // Entry rule entryRuleActionModel
-entryRuleActionModel returns [EObject current=null] 
-	:
+entryRuleActionModel returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getActionModelRule()); }
-	 iv_ruleActionModel=ruleActionModel 
-	 { $current=$iv_ruleActionModel.current; } 
-	 EOF 
-;
+	iv_ruleActionModel=ruleActionModel
+	{ $current=$iv_ruleActionModel.current; }
+	EOF;
 
 // Rule ActionModel
-ruleActionModel returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionModelAccess().getPackagesActionPackageParserRuleCall_0()); 
-	    }
-		lv_packages_0_0=ruleActionPackage		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionModelRule());
-	        }
-       		add(
-       			$current, 
-       			"packages",
-        		lv_packages_0_0, 
-        		"ActionPackage");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*
-;
-
-
-
-
-
-// Entry rule entryRuleActionPackage
-entryRuleActionPackage returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getActionPackageRule()); }
-	 iv_ruleActionPackage=ruleActionPackage 
-	 { $current=$iv_ruleActionPackage.current; } 
-	 EOF 
-;
-
-// Rule ActionPackage
-ruleActionPackage returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getActionPackageAccess().getActionPackageAction_0(),
-            $current);
-    }
-)	otherlv_1='package' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getActionPackageAccess().getPackageKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
-	    }
-		lv_name_2_0=ruleQualifiedName		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionPackageRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_2_0, 
-        		"QualifiedName");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3='{' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getActionPackageAccess().getLeftCurlyBracketKeyword_3_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionPackageAccess().getImportsActionImportParserRuleCall_3_1_0()); 
-	    }
-		lv_imports_4_0=ruleActionImport		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionPackageRule());
-	        }
-       		add(
-       			$current, 
-       			"imports",
-        		lv_imports_4_0, 
-        		"ActionImport");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionPackageAccess().getToolbarsActionToolbarParserRuleCall_3_2_0()); 
-	    }
-		lv_toolbars_5_0=ruleActionToolbar		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionPackageRule());
-	        }
-       		add(
-       			$current, 
-       			"toolbars",
-        		lv_toolbars_5_0, 
-        		"ActionToolbar");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_6='}' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getActionPackageAccess().getRightCurlyBracketKeyword_3_3());
-    }
-)?)
-;
-
-
-
-
-
-// Entry rule entryRuleActionToolbar
-entryRuleActionToolbar returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getActionToolbarRule()); }
-	 iv_ruleActionToolbar=ruleActionToolbar 
-	 { $current=$iv_ruleActionToolbar.current; } 
-	 EOF 
-;
-
-// Rule ActionToolbar
-ruleActionToolbar returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getActionToolbarAccess().getActionToolbarAction_0(),
-            $current);
-    }
-)	otherlv_1='toolbar' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getActionToolbarAccess().getToolbarKeyword_1());
-    }
-(
-(
-		lv_name_2_0=RULE_ID
-		{
-			newLeafNode(lv_name_2_0, grammarAccess.getActionToolbarAccess().getNameIDTerminalRuleCall_2_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionToolbarRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"name",
-        		lv_name_2_0, 
-        		"ID");
-	    }
-
-)
-)((
-(
-		lv_description_3_0=	'described by' 
-    {
-        newLeafNode(lv_description_3_0, grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionToolbarRule());
-	        }
-       		setWithLastConsumed($current, "description", true, "described by");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionToolbarAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
-	    }
-		lv_descriptionValue_4_0=ruleTRANSLATABLESTRING		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionToolbarRule());
-	        }
-       		set(
-       			$current, 
-       			"descriptionValue",
-        		lv_descriptionValue_4_0, 
-        		"TRANSLATABLESTRING");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?(	otherlv_5='items' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getActionToolbarAccess().getItemsKeyword_4_0());
-    }
-	otherlv_6='{' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getActionToolbarAccess().getLeftCurlyBracketKeyword_4_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionToolbarAccess().getActionsActionButtonParserRuleCall_4_2_0()); 
-	    }
-		lv_actions_7_0=ruleActionButton		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionToolbarRule());
-	        }
-       		add(
-       			$current, 
-       			"actions",
-        		lv_actions_7_0, 
-        		"ActionButton");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_8='}' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getActionToolbarAccess().getRightCurlyBracketKeyword_4_3());
-    }
-)?)
-;
-
-
-
-
-
-// Entry rule entryRuleActionButton
-entryRuleActionButton returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getActionButtonRule()); }
-	 iv_ruleActionButton=ruleActionButton 
-	 { $current=$iv_ruleActionButton.current; } 
-	 EOF 
-;
-
-// Rule ActionButton
-ruleActionButton returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getActionButtonAccess().getActionButtonAction_0(),
-            $current);
-    }
-)	otherlv_1='item' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getActionButtonAccess().getItemKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionButtonAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-	    }
-		lv_name_2_0=ruleTRANSLATABLEID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionButtonRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_2_0, 
-        		"TRANSLATABLEID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_description_3_0=	'described by' 
-    {
-        newLeafNode(lv_description_3_0, grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionButtonRule());
-	        }
-       		setWithLastConsumed($current, "description", true, "described by");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionButtonAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
-	    }
-		lv_descriptionValue_4_0=ruleTRANSLATABLESTRING		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionButtonRule());
-	        }
-       		set(
-       			$current, 
-       			"descriptionValue",
-        		lv_descriptionValue_4_0, 
-        		"TRANSLATABLESTRING");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?(	otherlv_5='icon' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getActionButtonAccess().getIconKeyword_4_0());
-    }
-(
-(
-		lv_iconURI_6_0=RULE_STRING
-		{
-			newLeafNode(lv_iconURI_6_0, grammarAccess.getActionButtonAccess().getIconURISTRINGTerminalRuleCall_4_1_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionButtonRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"iconURI",
-        		lv_iconURI_6_0, 
-        		"STRING");
-	    }
-
-)
-))?(
-
-(
-	{ 
-	  getUnorderedGroupHelper().enter(grammarAccess.getActionButtonAccess().getUnorderedGroup_5());
-	}
+ruleActionModel returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
 	(
 		(
-
-			( 
-				{getUnorderedGroupHelper().canSelect(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 0)}?=>(
-					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 0);
-	 				}
-					({true}?=>(	otherlv_8='group' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getActionButtonAccess().getGroupKeyword_5_0_0());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionButtonRule());
-	        }
-        }
-	otherlv_9=RULE_ID
-	{
-		newLeafNode(otherlv_9, grammarAccess.getActionButtonAccess().getGroupFunctionLibraryGroupCrossReference_5_0_1_0()); 
-	}
-
-)
-)(	otherlv_10='canExecute' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getActionButtonAccess().getCanExecuteKeyword_5_0_2_0());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionButtonRule());
-	        }
-        }
-	otherlv_11=RULE_ID
-	{
-		newLeafNode(otherlv_11, grammarAccess.getActionButtonAccess().getCanexecuteFunctionLibraryFunctionCrossReference_5_0_2_1_0()); 
-	}
-
-)
-))?))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getActionButtonAccess().getUnorderedGroup_5());
-	 				}
- 				)
-			)  |
-
-			( 
-				{getUnorderedGroupHelper().canSelect(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 1)}?=>(
-					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 1);
-	 				}
-					({true}?=>(	otherlv_12='executeParameter' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getActionButtonAccess().getExecuteParameterKeyword_5_1_0());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionButtonRule());
-	        }
-        }
-	otherlv_13=RULE_ID
-	{
-		newLeafNode(otherlv_13, grammarAccess.getActionButtonAccess().getExecuteparameterFunctionLibraryFunctionCrossReference_5_1_1_0()); 
-	}
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getActionButtonAccess().getUnorderedGroup_5());
-	 				}
- 				)
-			)  
-
-		)+
-	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getActionButtonAccess().getUnorderedGroup_5())}?	
+			(
+				{
+					newCompositeNode(grammarAccess.getActionModelAccess().getImportSectionXImportSectionParserRuleCall_0_0());
+				}
+				lv_importSection_0_0=ruleXImportSection
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionModelRule());
+					}
+					set(
+						$current,
+						"importSection",
+						lv_importSection_0_0,
+						"org.eclipse.xtext.xbase.Xtype.XImportSection");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionModelAccess().getPackagesActionPackageParserRuleCall_1_0());
+				}
+				lv_packages_1_0=ruleActionPackage
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionModelRule());
+					}
+					add(
+						$current,
+						"packages",
+						lv_packages_1_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.ActionPackage");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
 	)
-)
-	{ 
-	  getUnorderedGroupHelper().leave(grammarAccess.getActionButtonAccess().getUnorderedGroup_5());
-	}
-
-)?(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionButtonAccess().getActionTypeActionTypeParserRuleCall_6_0()); 
-	    }
-		lv_actionType_14_0=ruleActionType		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionButtonRule());
-	        }
-       		set(
-       			$current, 
-       			"actionType",
-        		lv_actionType_14_0, 
-        		"ActionType");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_15='message' 
-    {
-    	newLeafNode(otherlv_15, grammarAccess.getActionButtonAccess().getMessageKeyword_7_0());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionButtonRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getActionButtonAccess().getMessageMessageItemCrossReference_7_1_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
 ;
 
+// Entry rule entryRuleActionPackage
+entryRuleActionPackage returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getActionPackageRule()); }
+	iv_ruleActionPackage=ruleActionPackage
+	{ $current=$iv_ruleActionPackage.current; }
+	EOF;
 
+// Rule ActionPackage
+ruleActionPackage returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getActionPackageAccess().getActionPackageAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='package'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getActionPackageAccess().getPackageKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionPackageAccess().getNameQualifiedNameParserRuleCall_2_0());
+				}
+				lv_name_2_0=ruleQualifiedName
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionPackageRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			otherlv_3='{'
+			{
+				newLeafNode(otherlv_3, grammarAccess.getActionPackageAccess().getLeftCurlyBracketKeyword_3_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getActionPackageAccess().getCommandsActionCommandParserRuleCall_3_1_0());
+					}
+					lv_commands_4_0=ruleActionCommand
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getActionPackageRule());
+						}
+						add(
+							$current,
+							"commands",
+							lv_commands_4_0,
+							"org.eclipse.osbp.xtext.action.ActionDSL.ActionCommand");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getActionPackageAccess().getToolbarsActionToolbarParserRuleCall_3_2_0());
+					}
+					lv_toolbars_5_0=ruleActionToolbar
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getActionPackageRule());
+						}
+						add(
+							$current,
+							"toolbars",
+							lv_toolbars_5_0,
+							"org.eclipse.osbp.xtext.action.ActionDSL.ActionToolbar");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+			otherlv_6='}'
+			{
+				newLeafNode(otherlv_6, grammarAccess.getActionPackageAccess().getRightCurlyBracketKeyword_3_3());
+			}
+		)?
+	)
+;
 
+// Entry rule entryRuleActionCommand
+entryRuleActionCommand returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getActionCommandRule()); }
+	iv_ruleActionCommand=ruleActionCommand
+	{ $current=$iv_ruleActionCommand.current; }
+	EOF;
 
+// Rule ActionCommand
+ruleActionCommand returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getActionCommandAccess().getActionCommandAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='command'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getActionCommandAccess().getCommandKeyword_1());
+		}
+		(
+			(
+				lv_name_2_0=RULE_ID
+				{
+					newLeafNode(lv_name_2_0, grammarAccess.getActionCommandAccess().getNameIDTerminalRuleCall_2_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getActionCommandRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.xtext.xbase.Xtype.ID");
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_hasDescription_3_0='describedBy'
+					{
+						newLeafNode(lv_hasDescription_3_0, grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getActionCommandRule());
+						}
+						setWithLastConsumed($current, "hasDescription", true, "describedBy");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getActionCommandAccess().getDescriptionTRANSLATABLESTRINGParserRuleCall_3_1_0());
+					}
+					lv_description_4_0=ruleTRANSLATABLESTRING
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getActionCommandRule());
+						}
+						set(
+							$current,
+							"description",
+							lv_description_4_0,
+							"org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLESTRING");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		(
+			(
+				(
+					lv_hasKeyBinding_5_0='keyBinding'
+					{
+						newLeafNode(lv_hasKeyBinding_5_0, grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getActionCommandRule());
+						}
+						setWithLastConsumed($current, "hasKeyBinding", true, "keyBinding");
+					}
+				)
+			)
+			(
+				(
+					lv_keyBinding_6_0=RULE_STRING
+					{
+						newLeafNode(lv_keyBinding_6_0, grammarAccess.getActionCommandAccess().getKeyBindingSTRINGTerminalRuleCall_4_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getActionCommandRule());
+						}
+						setWithLastConsumed(
+							$current,
+							"keyBinding",
+							lv_keyBinding_6_0,
+							"org.eclipse.xtext.xbase.Xtype.STRING");
+					}
+				)
+			)
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionCommandAccess().getActionTypeActionTypeParserRuleCall_5_0());
+				}
+				lv_actionType_7_0=ruleActionType
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionCommandRule());
+					}
+					set(
+						$current,
+						"actionType",
+						lv_actionType_7_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.ActionType");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleActionToolbar
+entryRuleActionToolbar returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getActionToolbarRule()); }
+	iv_ruleActionToolbar=ruleActionToolbar
+	{ $current=$iv_ruleActionToolbar.current; }
+	EOF;
+
+// Rule ActionToolbar
+ruleActionToolbar returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getActionToolbarAccess().getActionToolbarAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='toolbar'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getActionToolbarAccess().getToolbarKeyword_1());
+		}
+		(
+			(
+				lv_name_2_0=RULE_ID
+				{
+					newLeafNode(lv_name_2_0, grammarAccess.getActionToolbarAccess().getNameIDTerminalRuleCall_2_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getActionToolbarRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.xtext.xbase.Xtype.ID");
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_description_3_0='describedBy'
+					{
+						newLeafNode(lv_description_3_0, grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getActionToolbarRule());
+						}
+						setWithLastConsumed($current, "description", true, "describedBy");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getActionToolbarAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0());
+					}
+					lv_descriptionValue_4_0=ruleTRANSLATABLESTRING
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getActionToolbarRule());
+						}
+						set(
+							$current,
+							"descriptionValue",
+							lv_descriptionValue_4_0,
+							"org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLESTRING");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		(
+			otherlv_5='items'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getActionToolbarAccess().getItemsKeyword_4_0());
+			}
+			otherlv_6='{'
+			{
+				newLeafNode(otherlv_6, grammarAccess.getActionToolbarAccess().getLeftCurlyBracketKeyword_4_1());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getActionToolbarAccess().getActionsActionButtonParserRuleCall_4_2_0());
+					}
+					lv_actions_7_0=ruleActionButton
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getActionToolbarRule());
+						}
+						add(
+							$current,
+							"actions",
+							lv_actions_7_0,
+							"org.eclipse.osbp.xtext.action.ActionDSL.ActionButton");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+			otherlv_8='}'
+			{
+				newLeafNode(otherlv_8, grammarAccess.getActionToolbarAccess().getRightCurlyBracketKeyword_4_3());
+			}
+		)?
+	)
+;
+
+// Entry rule entryRuleActionButton
+entryRuleActionButton returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getActionButtonRule()); }
+	iv_ruleActionButton=ruleActionButton
+	{ $current=$iv_ruleActionButton.current; }
+	EOF;
+
+// Rule ActionButton
+ruleActionButton returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getActionButtonAccess().getActionButtonAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='item'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getActionButtonAccess().getItemKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionButtonAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+				}
+				lv_name_2_0=ruleTRANSLATABLEID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionButtonRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLEID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_description_3_0='describedBy'
+					{
+						newLeafNode(lv_description_3_0, grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getActionButtonRule());
+						}
+						setWithLastConsumed($current, "description", true, "describedBy");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getActionButtonAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0());
+					}
+					lv_descriptionValue_4_0=ruleTRANSLATABLESTRING
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getActionButtonRule());
+						}
+						set(
+							$current,
+							"descriptionValue",
+							lv_descriptionValue_4_0,
+							"org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLESTRING");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		otherlv_5='command'
+		{
+			newLeafNode(otherlv_5, grammarAccess.getActionButtonAccess().getCommandKeyword_4());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getActionButtonRule());
+					}
+				}
+				otherlv_6=RULE_ID
+				{
+					newLeafNode(otherlv_6, grammarAccess.getActionButtonAccess().getCommandActionCommandCrossReference_5_0());
+				}
+			)
+		)
+		(
+			otherlv_7='icon'
+			{
+				newLeafNode(otherlv_7, grammarAccess.getActionButtonAccess().getIconKeyword_6_0());
+			}
+			(
+				(
+					lv_iconURI_8_0=RULE_STRING
+					{
+						newLeafNode(lv_iconURI_8_0, grammarAccess.getActionButtonAccess().getIconURISTRINGTerminalRuleCall_6_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getActionButtonRule());
+						}
+						setWithLastConsumed(
+							$current,
+							"iconURI",
+							lv_iconURI_8_0,
+							"org.eclipse.xtext.xbase.Xtype.STRING");
+					}
+				)
+			)
+		)?
+	)
+;
 
 // Entry rule entryRuleActionType
-entryRuleActionType returns [EObject current=null] 
-	:
+entryRuleActionType returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getActionTypeRule()); }
-	 iv_ruleActionType=ruleActionType 
-	 { $current=$iv_ruleActionType.current; } 
-	 EOF 
-;
+	iv_ruleActionType=ruleActionType
+	{ $current=$iv_ruleActionType.current; }
+	EOF;
 
 // Rule ActionType
-ruleActionType returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getActionTypeAccess().getActionTaskParserRuleCall_0()); 
-    }
-    this_ActionTask_0=ruleActionTask
-    { 
-        $current = $this_ActionTask_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getActionTypeAccess().getActionSelectWorkloadParserRuleCall_1()); 
-    }
-    this_ActionSelectWorkload_1=ruleActionSelectWorkload
-    { 
-        $current = $this_ActionSelectWorkload_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getActionTypeAccess().getActionDialogParserRuleCall_2()); 
-    }
-    this_ActionDialog_2=ruleActionDialog
-    { 
-        $current = $this_ActionDialog_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getActionTypeAccess().getActionReportParserRuleCall_3()); 
-    }
-    this_ActionReport_3=ruleActionReport
-    { 
-        $current = $this_ActionReport_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getActionTypeAccess().getActionChartParserRuleCall_4()); 
-    }
-    this_ActionChart_4=ruleActionChart
-    { 
-        $current = $this_ActionChart_4.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getActionTypeAccess().getActionWorkflowParserRuleCall_5()); 
-    }
-    this_ActionWorkflow_5=ruleActionWorkflow
-    { 
-        $current = $this_ActionWorkflow_5.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getActionTypeAccess().getActionGenericParserRuleCall_6()); 
-    }
-    this_ActionGeneric_6=ruleActionGeneric
-    { 
-        $current = $this_ActionGeneric_6.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getActionTypeAccess().getActionDatainterchangeParserRuleCall_7()); 
-    }
-    this_ActionDatainterchange_7=ruleActionDatainterchange
-    { 
-        $current = $this_ActionDatainterchange_7.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleActionType returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getActionTypeAccess().getActionTaskParserRuleCall_0());
+		}
+		this_ActionTask_0=ruleActionTask
+		{
+			$current = $this_ActionTask_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getActionTypeAccess().getActionSelectWorkloadParserRuleCall_1());
+		}
+		this_ActionSelectWorkload_1=ruleActionSelectWorkload
+		{
+			$current = $this_ActionSelectWorkload_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getActionTypeAccess().getActionDialogParserRuleCall_2());
+		}
+		this_ActionDialog_2=ruleActionDialog
+		{
+			$current = $this_ActionDialog_2.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getActionTypeAccess().getActionReportParserRuleCall_3());
+		}
+		this_ActionReport_3=ruleActionReport
+		{
+			$current = $this_ActionReport_3.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getActionTypeAccess().getActionChartParserRuleCall_4());
+		}
+		this_ActionChart_4=ruleActionChart
+		{
+			$current = $this_ActionChart_4.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getActionTypeAccess().getActionWorkflowParserRuleCall_5());
+		}
+		this_ActionWorkflow_5=ruleActionWorkflow
+		{
+			$current = $this_ActionWorkflow_5.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getActionTypeAccess().getActionFunctionParserRuleCall_6());
+		}
+		this_ActionFunction_6=ruleActionFunction
+		{
+			$current = $this_ActionFunction_6.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getActionTypeAccess().getActionDatainterchangeParserRuleCall_7());
+		}
+		this_ActionDatainterchange_7=ruleActionDatainterchange
+		{
+			$current = $this_ActionDatainterchange_7.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getActionTypeAccess().getActionUIParserRuleCall_8());
+		}
+		this_ActionUI_8=ruleActionUI
+		{
+			$current = $this_ActionUI_8.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleActionTask
-entryRuleActionTask returns [EObject current=null] 
-	:
+entryRuleActionTask returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getActionTaskRule()); }
-	 iv_ruleActionTask=ruleActionTask 
-	 { $current=$iv_ruleActionTask.current; } 
-	 EOF 
-;
+	iv_ruleActionTask=ruleActionTask
+	{ $current=$iv_ruleActionTask.current; }
+	EOF;
 
 // Rule ActionTask
-ruleActionTask returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='taskAction' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getActionTaskAccess().getTaskActionKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionTaskAccess().getActionTaskActionEnumEnumRuleCall_1_0()); 
-	    }
-		lv_action_1_0=ruleTaskActionEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionTaskRule());
-	        }
-       		set(
-       			$current, 
-       			"action",
-        		lv_action_1_0, 
-        		"TaskActionEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleActionTask returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='taskAction'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getActionTaskAccess().getTaskActionKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionTaskAccess().getActionTaskActionEnumEnumRuleCall_1_0());
+				}
+				lv_action_1_0=ruleTaskActionEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionTaskRule());
+					}
+					set(
+						$current,
+						"action",
+						lv_action_1_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.TaskActionEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleActionSelectWorkload
-entryRuleActionSelectWorkload returns [EObject current=null] 
-	:
+entryRuleActionSelectWorkload returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getActionSelectWorkloadRule()); }
-	 iv_ruleActionSelectWorkload=ruleActionSelectWorkload 
-	 { $current=$iv_ruleActionSelectWorkload.current; } 
-	 EOF 
-;
+	iv_ruleActionSelectWorkload=ruleActionSelectWorkload
+	{ $current=$iv_ruleActionSelectWorkload.current; }
+	EOF;
 
 // Rule ActionSelectWorkload
-ruleActionSelectWorkload returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='selectWorkloadAction' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getActionSelectWorkloadAccess().getSelectWorkloadActionKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionSelectWorkloadAccess().getActionSelectWorkloadActionEnumEnumRuleCall_1_0()); 
-	    }
-		lv_action_1_0=ruleSelectWorkloadActionEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionSelectWorkloadRule());
-	        }
-       		set(
-       			$current, 
-       			"action",
-        		lv_action_1_0, 
-        		"SelectWorkloadActionEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleActionSelectWorkload returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='selectWorkloadAction'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getActionSelectWorkloadAccess().getSelectWorkloadActionKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionSelectWorkloadAccess().getActionSelectWorkloadActionEnumEnumRuleCall_1_0());
+				}
+				lv_action_1_0=ruleSelectWorkloadActionEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionSelectWorkloadRule());
+					}
+					set(
+						$current,
+						"action",
+						lv_action_1_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.SelectWorkloadActionEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleActionDialog
-entryRuleActionDialog returns [EObject current=null] 
-	:
+entryRuleActionDialog returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getActionDialogRule()); }
-	 iv_ruleActionDialog=ruleActionDialog 
-	 { $current=$iv_ruleActionDialog.current; } 
-	 EOF 
-;
+	iv_ruleActionDialog=ruleActionDialog
+	{ $current=$iv_ruleActionDialog.current; }
+	EOF;
 
 // Rule ActionDialog
-ruleActionDialog returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='dialogAction' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getActionDialogAccess().getDialogActionKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionDialogAccess().getActionDialogActionEnumEnumRuleCall_1_0()); 
-	    }
-		lv_action_1_0=ruleDialogActionEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionDialogRule());
-	        }
-       		set(
-       			$current, 
-       			"action",
-        		lv_action_1_0, 
-        		"DialogActionEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleActionDialog returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='dialogAction'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getActionDialogAccess().getDialogActionKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionDialogAccess().getActionDialogActionEnumEnumRuleCall_1_0());
+				}
+				lv_action_1_0=ruleDialogActionEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionDialogRule());
+					}
+					set(
+						$current,
+						"action",
+						lv_action_1_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.DialogActionEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleActionReport
-entryRuleActionReport returns [EObject current=null] 
-	:
+entryRuleActionReport returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getActionReportRule()); }
-	 iv_ruleActionReport=ruleActionReport 
-	 { $current=$iv_ruleActionReport.current; } 
-	 EOF 
-;
+	iv_ruleActionReport=ruleActionReport
+	{ $current=$iv_ruleActionReport.current; }
+	EOF;
 
 // Rule ActionReport
-ruleActionReport returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='reportAction' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getActionReportAccess().getReportActionKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionReportAccess().getActionReportActionEnumEnumRuleCall_1_0()); 
-	    }
-		lv_action_1_0=ruleReportActionEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionReportRule());
-	        }
-       		set(
-       			$current, 
-       			"action",
-        		lv_action_1_0, 
-        		"ReportActionEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleActionReport returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='reportAction'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getActionReportAccess().getReportActionKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionReportAccess().getActionReportActionEnumEnumRuleCall_1_0());
+				}
+				lv_action_1_0=ruleReportActionEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionReportRule());
+					}
+					set(
+						$current,
+						"action",
+						lv_action_1_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.ReportActionEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleActionChart
-entryRuleActionChart returns [EObject current=null] 
-	:
+entryRuleActionChart returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getActionChartRule()); }
-	 iv_ruleActionChart=ruleActionChart 
-	 { $current=$iv_ruleActionChart.current; } 
-	 EOF 
-;
+	iv_ruleActionChart=ruleActionChart
+	{ $current=$iv_ruleActionChart.current; }
+	EOF;
 
 // Rule ActionChart
-ruleActionChart returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='chartAction' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getActionChartAccess().getChartActionKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionChartAccess().getActionChartActionEnumEnumRuleCall_1_0()); 
-	    }
-		lv_action_1_0=ruleChartActionEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionChartRule());
-	        }
-       		set(
-       			$current, 
-       			"action",
-        		lv_action_1_0, 
-        		"ChartActionEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleActionChart returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='chartAction'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getActionChartAccess().getChartActionKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionChartAccess().getActionChartActionEnumEnumRuleCall_1_0());
+				}
+				lv_action_1_0=ruleChartActionEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionChartRule());
+					}
+					set(
+						$current,
+						"action",
+						lv_action_1_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.ChartActionEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleActionWorkflow
-entryRuleActionWorkflow returns [EObject current=null] 
-	:
+entryRuleActionWorkflow returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getActionWorkflowRule()); }
-	 iv_ruleActionWorkflow=ruleActionWorkflow 
-	 { $current=$iv_ruleActionWorkflow.current; } 
-	 EOF 
-;
+	iv_ruleActionWorkflow=ruleActionWorkflow
+	{ $current=$iv_ruleActionWorkflow.current; }
+	EOF;
 
 // Rule ActionWorkflow
-ruleActionWorkflow returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='workflowAction' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getActionWorkflowAccess().getWorkflowActionKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionWorkflowAccess().getActionWorkflowActionEnumEnumRuleCall_1_0()); 
-	    }
-		lv_action_1_0=ruleWorkflowActionEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionWorkflowRule());
-	        }
-       		set(
-       			$current, 
-       			"action",
-        		lv_action_1_0, 
-        		"WorkflowActionEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleActionWorkflow returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='workflowAction'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getActionWorkflowAccess().getWorkflowActionKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionWorkflowAccess().getActionWorkflowActionEnumEnumRuleCall_1_0());
+				}
+				lv_action_1_0=ruleWorkflowActionEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionWorkflowRule());
+					}
+					set(
+						$current,
+						"action",
+						lv_action_1_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.WorkflowActionEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleActionDatainterchange
-entryRuleActionDatainterchange returns [EObject current=null] 
-	:
+entryRuleActionDatainterchange returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getActionDatainterchangeRule()); }
-	 iv_ruleActionDatainterchange=ruleActionDatainterchange 
-	 { $current=$iv_ruleActionDatainterchange.current; } 
-	 EOF 
-;
+	iv_ruleActionDatainterchange=ruleActionDatainterchange
+	{ $current=$iv_ruleActionDatainterchange.current; }
+	EOF;
 
 // Rule ActionDatainterchange
-ruleActionDatainterchange returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='datainterchangeAction' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getActionDatainterchangeAccess().getDatainterchangeActionKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionDatainterchangeAccess().getActionDatainterchangeActionEnumEnumRuleCall_1_0()); 
-	    }
-		lv_action_1_0=ruleDatainterchangeActionEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionDatainterchangeRule());
-	        }
-       		set(
-       			$current, 
-       			"action",
-        		lv_action_1_0, 
-        		"DatainterchangeActionEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
+ruleActionDatainterchange returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='datainterchangeAction'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionDatainterchangeRule());
-	        }
-        }
-	otherlv_2=RULE_ID
-	{
-		newLeafNode(otherlv_2, grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeCrossReference_2_0()); 
-	}
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleActionGeneric
-entryRuleActionGeneric returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getActionGenericRule()); }
-	 iv_ruleActionGeneric=ruleActionGeneric 
-	 { $current=$iv_ruleActionGeneric.current; } 
-	 EOF 
-;
-
-// Rule ActionGeneric
-ruleActionGeneric returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='genericAction' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getActionGenericAccess().getGenericActionKeyword_0());
-    }
-(
-(
-		lv_action_1_0=RULE_STRING
-		{
-			newLeafNode(lv_action_1_0, grammarAccess.getActionGenericAccess().getActionSTRINGTerminalRuleCall_1_0()); 
+			newLeafNode(otherlv_0, grammarAccess.getActionDatainterchangeAccess().getDatainterchangeActionKeyword_0());
 		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionDatainterchangeAccess().getActionDatainterchangeActionEnumEnumRuleCall_1_0());
+				}
+				lv_action_1_0=ruleDatainterchangeActionEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionDatainterchangeRule());
+					}
+					set(
+						$current,
+						"action",
+						lv_action_1_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.DatainterchangeActionEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getActionDatainterchangeRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeCrossReference_2_0());
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleActionUI
+entryRuleActionUI returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getActionUIRule()); }
+	iv_ruleActionUI=ruleActionUI
+	{ $current=$iv_ruleActionUI.current; }
+	EOF;
+
+// Rule ActionUI
+ruleActionUI returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='userinterfaceAction'
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getActionGenericRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"action",
-        		lv_action_1_0, 
-        		"STRING");
-	    }
-
-)
-))
+			newLeafNode(otherlv_0, grammarAccess.getActionUIAccess().getUserinterfaceActionKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getActionUIAccess().getActionUIActionEnumEnumRuleCall_1_0());
+				}
+				lv_action_1_0=ruleUIActionEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getActionUIRule());
+					}
+					set(
+						$current,
+						"action",
+						lv_action_1_0,
+						"org.eclipse.osbp.xtext.action.ActionDSL.UIActionEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
+// Entry rule entryRuleActionFunction
+entryRuleActionFunction returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getActionFunctionRule()); }
+	iv_ruleActionFunction=ruleActionFunction
+	{ $current=$iv_ruleActionFunction.current; }
+	EOF;
 
-
-
-
-
-
-// Entry rule entryRuleActionImport
-entryRuleActionImport returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getActionImportRule()); }
-	 iv_ruleActionImport=ruleActionImport 
-	 { $current=$iv_ruleActionImport.current; } 
-	 EOF 
+// Rule ActionFunction
+ruleActionFunction returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='functionalAction'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getActionFunctionAccess().getFunctionalActionKeyword_0());
+		}
+		otherlv_1='group'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getActionFunctionAccess().getGroupKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getActionFunctionRule());
+					}
+				}
+				otherlv_2=RULE_ID
+				{
+					newLeafNode(otherlv_2, grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupCrossReference_2_0());
+				}
+			)
+		)
+		otherlv_3='canExecute'
+		{
+			newLeafNode(otherlv_3, grammarAccess.getActionFunctionAccess().getCanExecuteKeyword_3());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getActionFunctionRule());
+					}
+				}
+				otherlv_4=RULE_ID
+				{
+					newLeafNode(otherlv_4, grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteCrossReference_4_0());
+				}
+			)
+		)
+		(
+			(
+				(
+					(
+						lv_hasExecuteImmediate_5_0='executeImmediate'
+						{
+							newLeafNode(lv_hasExecuteImmediate_5_0, grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getActionFunctionRule());
+							}
+							setWithLastConsumed($current, "hasExecuteImmediate", true, "executeImmediate");
+						}
+					)
+				)
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getActionFunctionRule());
+							}
+						}
+						otherlv_6=RULE_ID
+						{
+							newLeafNode(otherlv_6, grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0());
+						}
+					)
+				)
+				(
+					(
+						(
+							lv_hasMessage_7_0='messageCategory'
+							{
+								newLeafNode(lv_hasMessage_7_0, grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0());
+							}
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getActionFunctionRule());
+								}
+								setWithLastConsumed($current, "hasMessage", true, "messageCategory");
+							}
+						)
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getActionFunctionRule());
+								}
+							}
+							otherlv_8=RULE_ID
+							{
+								newLeafNode(otherlv_8, grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_0_2_1_0());
+							}
+						)
+					)
+					otherlv_9='onFailMessage'
+					{
+						newLeafNode(otherlv_9, grammarAccess.getActionFunctionAccess().getOnFailMessageKeyword_5_0_2_2());
+					}
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getActionFunctionRule());
+								}
+							}
+							otherlv_10=RULE_ID
+							{
+								newLeafNode(otherlv_10, grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemCrossReference_5_0_2_3_0());
+							}
+						)
+					)
+					(
+						(
+							(
+								lv_hasSuccessMessage_11_0='onSuccessMessage'
+								{
+									newLeafNode(lv_hasSuccessMessage_11_0, grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0());
+								}
+								{
+									if ($current==null) {
+										$current = createModelElement(grammarAccess.getActionFunctionRule());
+									}
+									setWithLastConsumed($current, "hasSuccessMessage", true, "onSuccessMessage");
+								}
+							)
+						)
+						(
+							(
+								{
+									if ($current==null) {
+										$current = createModelElement(grammarAccess.getActionFunctionRule());
+									}
+								}
+								otherlv_12=RULE_ID
+								{
+									newLeafNode(otherlv_12, grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0());
+								}
+							)
+						)
+					)?
+				)?
+			)
+			    |
+			(
+				(
+					(
+						lv_hasExecuteLater_13_0='executeLater'
+						{
+							newLeafNode(lv_hasExecuteLater_13_0, grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getActionFunctionRule());
+							}
+							setWithLastConsumed($current, "hasExecuteLater", true, "executeLater");
+						}
+					)
+				)
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getActionFunctionRule());
+							}
+						}
+						otherlv_14=RULE_ID
+						{
+							newLeafNode(otherlv_14, grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0());
+						}
+					)
+				)
+				(
+					(
+						(
+							lv_hasStartedMessage_15_0='messageCategory'
+							{
+								newLeafNode(lv_hasStartedMessage_15_0, grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0());
+							}
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getActionFunctionRule());
+								}
+								setWithLastConsumed($current, "hasStartedMessage", true, "messageCategory");
+							}
+						)
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getActionFunctionRule());
+								}
+							}
+							otherlv_16=RULE_ID
+							{
+								newLeafNode(otherlv_16, grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_1_2_1_0());
+							}
+						)
+					)
+					otherlv_17='onStartedMessage'
+					{
+						newLeafNode(otherlv_17, grammarAccess.getActionFunctionAccess().getOnStartedMessageKeyword_5_1_2_2());
+					}
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getActionFunctionRule());
+								}
+							}
+							otherlv_18=RULE_ID
+							{
+								newLeafNode(otherlv_18, grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemCrossReference_5_1_2_3_0());
+							}
+						)
+					)
+				)?
+			)
+		)
+	)
 ;
 
-// Rule ActionImport
-ruleActionImport returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='import' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getActionImportAccess().getImportKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getActionImportAccess().getImportedNamespaceActionQualifiedNameWithWildCardParserRuleCall_1_0()); 
-	    }
-		lv_importedNamespace_1_0=ruleActionQualifiedNameWithWildCard		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getActionImportRule());
-	        }
-       		set(
-       			$current, 
-       			"importedNamespace",
-        		lv_importedNamespace_1_0, 
-        		"ActionQualifiedNameWithWildCard");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-
-
-// Entry rule entryRuleActionQualifiedNameWithWildCard
-entryRuleActionQualifiedNameWithWildCard returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getActionQualifiedNameWithWildCardRule()); } 
-	 iv_ruleActionQualifiedNameWithWildCard=ruleActionQualifiedNameWithWildCard 
-	 { $current=$iv_ruleActionQualifiedNameWithWildCard.current.getText(); }  
-	 EOF 
-;
-
-// Rule ActionQualifiedNameWithWildCard
-ruleActionQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getActionQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
-    }
-    this_QualifiedName_0=ruleQualifiedName    {
-		$current.merge(this_QualifiedName_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-(
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getActionQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
-    }
-
-	kw='*' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getActionQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
-    }
-)?)
-    ;
-
-
-
-
-
-// Entry rule entryRuleQualifiedName
-entryRuleQualifiedName returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getQualifiedNameRule()); } 
-	 iv_ruleQualifiedName=ruleQualifiedName 
-	 { $current=$iv_ruleQualifiedName.current.getText(); }  
-	 EOF 
-;
-
-// Rule QualifiedName
-ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
-    }
-    this_ValidID_0=ruleValidID    {
-		$current.merge(this_ValidID_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-(((
-	'.' 
-)=>
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
-    }
-)
-    { 
-        newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
-    }
-    this_ValidID_2=ruleValidID    {
-		$current.merge(this_ValidID_2);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-)*)
-    ;
-
-
-
-
-
-// Entry rule entryRuleValidID
-entryRuleValidID returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getValidIDRule()); } 
-	 iv_ruleValidID=ruleValidID 
-	 { $current=$iv_ruleValidID.current.getText(); }  
-	 EOF 
-;
-
-// Rule ValidID
-ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-    this_ID_0=RULE_ID    {
-		$current.merge(this_ID_0);
-    }
-
-    { 
-    newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
-    }
-
-    ;
-
-
-
-
-
 // Entry rule entryRuleTRANSLATABLEID
-entryRuleTRANSLATABLEID returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); } 
-	 iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID 
-	 { $current=$iv_ruleTRANSLATABLEID.current.getText(); }  
-	 EOF 
-;
+entryRuleTRANSLATABLEID returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); }
+	iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID
+	{ $current=$iv_ruleTRANSLATABLEID.current.getText(); }
+	EOF;
 
 // Rule TRANSLATABLEID
-ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-    this_ID_0=RULE_ID    {
+ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	this_ID_0=RULE_ID
+	{
 		$current.merge(this_ID_0);
-    }
-
-    { 
-    newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
-    }
-
-    ;
-
-
-
-
+	}
+	{
+		newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall());
+	}
+;
 
 // Entry rule entryRuleTRANSLATABLESTRING
-entryRuleTRANSLATABLESTRING returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); } 
-	 iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING 
-	 { $current=$iv_ruleTRANSLATABLESTRING.current.getText(); }  
-	 EOF 
-;
+entryRuleTRANSLATABLESTRING returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); }
+	iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING
+	{ $current=$iv_ruleTRANSLATABLESTRING.current.getText(); }
+	EOF;
 
 // Rule TRANSLATABLESTRING
-ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-    this_STRING_0=RULE_STRING    {
+ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	this_STRING_0=RULE_STRING
+	{
 		$current.merge(this_STRING_0);
-    }
+	}
+	{
+		newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall());
+	}
+;
 
-    { 
-    newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
-    }
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXImportDeclarationRule()); }
+	iv_ruleXImportDeclaration=ruleXImportDeclaration
+	{ $current=$iv_ruleXImportDeclaration.current; }
+	EOF;
 
-    ;
-
-
-
-
+// Rule XImportDeclaration
+ruleXImportDeclaration returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='import'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
+		}
+		(
+			(
+				(
+					(
+						lv_static_2_0='static'
+						{
+							newLeafNode(lv_static_2_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+							}
+							setWithLastConsumed($current, "static", true, "static");
+						}
+					)
+				)
+				(
+					(
+						lv_extension_3_0='extension'
+						{
+							newLeafNode(lv_extension_3_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+							}
+							setWithLastConsumed($current, "extension", true, "extension");
+						}
+					)
+				)?
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0());
+						}
+						ruleQualifiedNameInStaticImport
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						(
+							lv_wildcard_5_0='*'
+							{
+								newLeafNode(lv_wildcard_5_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0());
+							}
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+								}
+								setWithLastConsumed($current, "wildcard", true, "*");
+							}
+						)
+					)
+					    |
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0());
+							}
+							lv_memberName_6_0=ruleValidID
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+								}
+								set(
+									$current,
+									"memberName",
+									lv_memberName_6_0,
+									"org.eclipse.xtext.xbase.Xtype.ValidID");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			    |
+			(
+				(
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+						}
+					}
+					{
+						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0());
+					}
+					ruleQualifiedName
+					{
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			    |
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0());
+					}
+					lv_importedNamespace_8_0=ruleQualifiedNameWithWildcard
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+						}
+						set(
+							$current,
+							"importedNamespace",
+							lv_importedNamespace_8_0,
+							"org.eclipse.xtext.xbase.Xtype.QualifiedNameWithWildcard");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			    |
+			(
+				(
+					(
+						lv_fqnImport_9_0='ns'
+						{
+							newLeafNode(lv_fqnImport_9_0, grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXImportDeclarationRule());
+							}
+							setWithLastConsumed($current, "fqnImport", true, "ns");
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0());
+						}
+						lv_importedFullyQualifiedName_10_0=ruleQualifiedName
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+							}
+							set(
+								$current,
+								"importedFullyQualifiedName",
+								lv_importedFullyQualifiedName_10_0,
+								"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)
+		(
+			otherlv_11=';'
+			{
+				newLeafNode(otherlv_11, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3());
+			}
+		)?
+	)
+;
 
 // Entry rule entryRuleXAnnotation
-entryRuleXAnnotation returns [EObject current=null] 
-	:
+entryRuleXAnnotation returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationRule()); }
-	 iv_ruleXAnnotation=ruleXAnnotation 
-	 { $current=$iv_ruleXAnnotation.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotation=ruleXAnnotation
+	{ $current=$iv_ruleXAnnotation.current; }
+	EOF;
 
 // Rule XAnnotation
-ruleXAnnotation returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
-            $current);
-    }
-)	otherlv_1='@' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
-    }
-(
-(
+ruleXAnnotation returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='@'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAnnotationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'(' 
-)=>	otherlv_3='(' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
-    }
-)((((((
-(
-		ruleValidID
-)
-)	'=' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
-	    }
-		lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
-	        }
-       		add(
-       			$current, 
-       			"elementValuePairs",
-        		lv_elementValuePairs_4_0, 
-        		"XAnnotationElementValuePair");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_5=',' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
-    }
-((((
-(
-		ruleValidID
-)
-)	'=' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
-	    }
-		lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
-	        }
-       		add(
-       			$current, 
-       			"elementValuePairs",
-        		lv_elementValuePairs_6_0, 
-        		"XAnnotationElementValuePair");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
-    |(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
-	    }
-		lv_value_7_0=ruleXAnnotationElementValueOrCommaList		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_7_0, 
-        		"XAnnotationElementValueOrCommaList");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?	otherlv_8=')' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
-    }
-)?)
+			newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXAnnotationRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0());
+				}
+				ruleQualifiedName
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				('(')=>
+				otherlv_3='('
+				{
+					newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
+				}
+			)
+			(
+				(
+					(
+						((
+							(
+								(
+									ruleValidID
+								)
+							)
+							'='
+						)
+						)=>
+						(
+							{
+								newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0());
+							}
+							lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+								}
+								add(
+									$current,
+									"elementValuePairs",
+									lv_elementValuePairs_4_0,
+									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValuePair");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_5=','
+						{
+							newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+						}
+						(
+							((
+								(
+									(
+										ruleValidID
+									)
+								)
+								'='
+							)
+							)=>
+							(
+								{
+									newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0());
+								}
+								lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+									}
+									add(
+										$current,
+										"elementValuePairs",
+										lv_elementValuePairs_6_0,
+										"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValuePair");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)
+				    |
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0());
+						}
+						lv_value_7_0=ruleXAnnotationElementValueOrCommaList
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+							}
+							set(
+								$current,
+								"value",
+								lv_value_7_0,
+								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValueOrCommaList");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)?
+			otherlv_8=')'
+			{
+				newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
+			}
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXAnnotationElementValuePair
-entryRuleXAnnotationElementValuePair returns [EObject current=null] 
-	:
+entryRuleXAnnotationElementValuePair returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); }
-	 iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair 
-	 { $current=$iv_ruleXAnnotationElementValuePair.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair
+	{ $current=$iv_ruleXAnnotationElementValuePair.current; }
+	EOF;
 
 // Rule XAnnotationElementValuePair
-ruleXAnnotationElementValuePair returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-(
-		ruleValidID
-)
-)	'=' 
-))=>((
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
-	    }
-		ruleValidID		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_1='=' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
-	    }
-		lv_value_2_0=ruleXAnnotationElementValue		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_2_0, 
-        		"XAnnotationElementValue");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXAnnotationElementValuePair returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+					(
+						ruleValidID
+					)
+				)
+				'='
+			)
+			)=>
+			(
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0());
+						}
+						ruleValidID
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				otherlv_1='='
+				{
+					newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0());
+				}
+				lv_value_2_0=ruleXAnnotationElementValue
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
+					}
+					set(
+						$current,
+						"value",
+						lv_value_2_0,
+						"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValue");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXAnnotationElementValueOrCommaList
-entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] 
-	:
+entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
-	 iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList 
-	 { $current=$iv_ruleXAnnotationElementValueOrCommaList.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList
+	{ $current=$iv_ruleXAnnotationElementValueOrCommaList.current; }
+	EOF;
 
 // Rule XAnnotationElementValueOrCommaList
-ruleXAnnotationElementValueOrCommaList returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((((((
-)	'#' 
-	'[' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
-            $current);
-    }
-)	otherlv_1='#' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
-    }
-	otherlv_2='[' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
-    }
-))((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-	    }
-		lv_elements_3_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_3_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
-	    }
-		lv_elements_5_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_5_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6=']' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
-    }
-)
-    |(
-    { 
-        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
-    }
-    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
-    { 
-        $current = $this_XAnnotationOrExpression_7.current; 
-        afterParserOrEnumRuleCall();
-    }
-((
-    {
-        $current = forceCreateModelElementAndAdd(
-            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
-            $current);
-    }
-)(	otherlv_9=',' 
-    {
-    	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
-	    }
-		lv_elements_10_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_10_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))+)?))
+ruleXAnnotationElementValueOrCommaList returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				((
+					(
+					)
+					'#'
+					'['
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElement(
+								grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+								$current);
+						}
+					)
+					otherlv_1='#'
+					{
+						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+					}
+					otherlv_2='['
+					{
+						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+					}
+				)
+			)
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
+						}
+						lv_elements_3_0=ruleXAnnotationOrExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+							}
+							add(
+								$current,
+								"elements",
+								lv_elements_3_0,
+								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					otherlv_4=','
+					{
+						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
+							}
+							lv_elements_5_0=ruleXAnnotationOrExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+								}
+								add(
+									$current,
+									"elements",
+									lv_elements_5_0,
+									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)*
+			)?
+			otherlv_6=']'
+			{
+				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+			}
+		)
+		    |
+		(
+			{
+				newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0());
+			}
+			this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+			{
+				$current = $this_XAnnotationOrExpression_7.current;
+				afterParserOrEnumRuleCall();
+			}
+			(
+				(
+					{
+						$current = forceCreateModelElementAndAdd(
+							grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+							$current);
+					}
+				)
+				(
+					otherlv_9=','
+					{
+						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0());
+							}
+							lv_elements_10_0=ruleXAnnotationOrExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+								}
+								add(
+									$current,
+									"elements",
+									lv_elements_10_0,
+									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)+
+			)?
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXAnnotationElementValue
-entryRuleXAnnotationElementValue returns [EObject current=null] 
-	:
+entryRuleXAnnotationElementValue returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); }
-	 iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue 
-	 { $current=$iv_ruleXAnnotationElementValue.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue
+	{ $current=$iv_ruleXAnnotationElementValue.current; }
+	EOF;
 
 // Rule XAnnotationElementValue
-ruleXAnnotationElementValue returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((((((
-)	'#' 
-	'[' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
-            $current);
-    }
-)	otherlv_1='#' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
-    }
-	otherlv_2='[' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
-    }
-))((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-	    }
-		lv_elements_3_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_3_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
-	    }
-		lv_elements_5_0=ruleXAnnotationOrExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_5_0, 
-        		"XAnnotationOrExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6=']' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
-    }
-)
-    |
-    { 
-        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
-    }
-    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
-    { 
-        $current = $this_XAnnotationOrExpression_7.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXAnnotationElementValue returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				((
+					(
+					)
+					'#'
+					'['
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElement(
+								grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+								$current);
+						}
+					)
+					otherlv_1='#'
+					{
+						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+					}
+					otherlv_2='['
+					{
+						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+					}
+				)
+			)
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
+						}
+						lv_elements_3_0=ruleXAnnotationOrExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+							}
+							add(
+								$current,
+								"elements",
+								lv_elements_3_0,
+								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					otherlv_4=','
+					{
+						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
+							}
+							lv_elements_5_0=ruleXAnnotationOrExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+								}
+								add(
+									$current,
+									"elements",
+									lv_elements_5_0,
+									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)*
+			)?
+			otherlv_6=']'
+			{
+				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+			}
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1());
+		}
+		this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+		{
+			$current = $this_XAnnotationOrExpression_7.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXAnnotationOrExpression
-entryRuleXAnnotationOrExpression returns [EObject current=null] 
-	:
+entryRuleXAnnotationOrExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); }
-	 iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression 
-	 { $current=$iv_ruleXAnnotationOrExpression.current; } 
-	 EOF 
-;
+	iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression
+	{ $current=$iv_ruleXAnnotationOrExpression.current; }
+	EOF;
 
 // Rule XAnnotationOrExpression
-ruleXAnnotationOrExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
-    }
-    this_XAnnotation_0=ruleXAnnotation
-    { 
-        $current = $this_XAnnotation_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
-    }
-    this_XExpression_1=ruleXExpression
-    { 
-        $current = $this_XExpression_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXAnnotationOrExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0());
+		}
+		this_XAnnotation_0=ruleXAnnotation
+		{
+			$current = $this_XAnnotation_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1());
+		}
+		this_XExpression_1=ruleXExpression
+		{
+			$current = $this_XExpression_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXExpression
-entryRuleXExpression returns [EObject current=null] 
-	:
+entryRuleXExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXExpressionRule()); }
-	 iv_ruleXExpression=ruleXExpression 
-	 { $current=$iv_ruleXExpression.current; } 
-	 EOF 
-;
+	iv_ruleXExpression=ruleXExpression
+	{ $current=$iv_ruleXExpression.current; }
+	EOF;
 
 // Rule XExpression
-ruleXExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-    { 
-        newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
-    }
-    this_XAssignment_0=ruleXAssignment
-    { 
-        $current = $this_XAssignment_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
+ruleXExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	{
+		newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall());
+	}
+	this_XAssignment_0=ruleXAssignment
+	{
+		$current = $this_XAssignment_0.current;
+		afterParserOrEnumRuleCall();
+	}
 ;
 
-
-
-
-
 // Entry rule entryRuleXAssignment
-entryRuleXAssignment returns [EObject current=null] 
-	:
+entryRuleXAssignment returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAssignmentRule()); }
-	 iv_ruleXAssignment=ruleXAssignment 
-	 { $current=$iv_ruleXAssignment.current; } 
-	 EOF 
-;
+	iv_ruleXAssignment=ruleXAssignment
+	{ $current=$iv_ruleXAssignment.current; }
+	EOF;
 
 // Rule XAssignment
-ruleXAssignment returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
-            $current);
-    }
-)(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAssignmentRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
-	    }
-		ruleFeatureCallID		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    { 
-        newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
-    }
-ruleOpSingleAssign
-    { 
-        afterParserOrEnumRuleCall();
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
-	    }
-		lv_value_3_0=ruleXAssignment		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_3_0, 
-        		"XAssignment");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |(
-    { 
-        newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
-    }
-    this_XOrExpression_4=ruleXOrExpression
-    { 
-        $current = $this_XOrExpression_4.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpMultiAssign
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-            $current);
-    }
-)(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAssignmentRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
-	    }
-		ruleOpMultiAssign		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
-	    }
-		lv_rightOperand_7_0=ruleXAssignment		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_7_0, 
-        		"XAssignment");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?))
+ruleXAssignment returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					$current = forceCreateModelElement(
+						grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+						$current);
+				}
+			)
+			(
+				(
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXAssignmentRule());
+						}
+					}
+					{
+						newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
+					}
+					ruleFeatureCallID
+					{
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			{
+				newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2());
+			}
+			ruleOpSingleAssign
+			{
+				afterParserOrEnumRuleCall();
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0());
+					}
+					lv_value_3_0=ruleXAssignment
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+						}
+						set(
+							$current,
+							"value",
+							lv_value_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XAssignment");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)
+		    |
+		(
+			{
+				newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0());
+			}
+			this_XOrExpression_4=ruleXOrExpression
+			{
+				$current = $this_XOrExpression_4.current;
+				afterParserOrEnumRuleCall();
+			}
+			(
+				(
+					((
+						(
+						)
+						(
+							(
+								ruleOpMultiAssign
+							)
+						)
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+									$current);
+							}
+						)
+						(
+							(
+								{
+									if ($current==null) {
+										$current = createModelElement(grammarAccess.getXAssignmentRule());
+									}
+								}
+								{
+									newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
+								}
+								ruleOpMultiAssign
+								{
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0());
+						}
+						lv_rightOperand_7_0=ruleXAssignment
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+							}
+							set(
+								$current,
+								"rightOperand",
+								lv_rightOperand_7_0,
+								"org.eclipse.xtext.xbase.Xbase.XAssignment");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)?
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpSingleAssign
-entryRuleOpSingleAssign returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpSingleAssignRule()); } 
-	 iv_ruleOpSingleAssign=ruleOpSingleAssign 
-	 { $current=$iv_ruleOpSingleAssign.current.getText(); }  
-	 EOF 
-;
+entryRuleOpSingleAssign returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpSingleAssignRule()); }
+	iv_ruleOpSingleAssign=ruleOpSingleAssign
+	{ $current=$iv_ruleOpSingleAssign.current.getText(); }
+	EOF;
 
 // Rule OpSingleAssign
-ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-	kw='=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
-    }
-
-    ;
-
-
-
-
+ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	kw='='
+	{
+		$current.merge(kw);
+		newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword());
+	}
+;
 
 // Entry rule entryRuleOpMultiAssign
-entryRuleOpMultiAssign returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpMultiAssignRule()); } 
-	 iv_ruleOpMultiAssign=ruleOpMultiAssign 
-	 { $current=$iv_ruleOpMultiAssign.current.getText(); }  
-	 EOF 
-;
+entryRuleOpMultiAssign returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpMultiAssignRule()); }
+	iv_ruleOpMultiAssign=ruleOpMultiAssign
+	{ $current=$iv_ruleOpMultiAssign.current.getText(); }
+	EOF;
 
 // Rule OpMultiAssign
-ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='+=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
-    }
-
-    |
-	kw='-=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
-    }
-
-    |
-	kw='*=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
-    }
-
-    |
-	kw='/=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
-    }
-
-    |
-	kw='%=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
-    }
-
-    |(
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
-    }
-
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
-    }
-
-	kw='=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
-    }
-)
-    |(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
-    }
-(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
-    }
-)?
-	kw='>=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
-    }
-))
-    ;
-
-
-
-
+ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='+='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0());
+		}
+		    |
+		kw='-='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1());
+		}
+		    |
+		kw='*='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2());
+		}
+		    |
+		kw='/='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3());
+		}
+		    |
+		kw='%='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4());
+		}
+		    |
+		(
+			kw='<'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0());
+			}
+			kw='<'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1());
+			}
+			kw='='
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2());
+			}
+		)
+		    |
+		(
+			kw='>'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0());
+			}
+			(
+				kw='>'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1());
+				}
+			)?
+			kw='>='
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2());
+			}
+		)
+	)
+;
 
 // Entry rule entryRuleXOrExpression
-entryRuleXOrExpression returns [EObject current=null] 
-	:
+entryRuleXOrExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXOrExpressionRule()); }
-	 iv_ruleXOrExpression=ruleXOrExpression 
-	 { $current=$iv_ruleXOrExpression.current; } 
-	 EOF 
-;
+	iv_ruleXOrExpression=ruleXOrExpression
+	{ $current=$iv_ruleXOrExpression.current; }
+	EOF;
 
 // Rule XOrExpression
-ruleXOrExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
-    }
-    this_XAndExpression_0=ruleXAndExpression
-    { 
-        $current = $this_XAndExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpOr
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXOrExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXOrExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpOr		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXAndExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XAndExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0());
+		}
+		this_XAndExpression_0=ruleXAndExpression
+		{
+			$current = $this_XAndExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpOr
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXOrExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpOr
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXAndExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XAndExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpOr
-entryRuleOpOr returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpOrRule()); } 
-	 iv_ruleOpOr=ruleOpOr 
-	 { $current=$iv_ruleOpOr.current.getText(); }  
-	 EOF 
-;
+entryRuleOpOr returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpOrRule()); }
+	iv_ruleOpOr=ruleOpOr
+	{ $current=$iv_ruleOpOr.current.getText(); }
+	EOF;
 
 // Rule OpOr
-ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-	kw='||' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
-    }
-
-    ;
-
-
-
-
+ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	kw='||'
+	{
+		$current.merge(kw);
+		newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword());
+	}
+;
 
 // Entry rule entryRuleXAndExpression
-entryRuleXAndExpression returns [EObject current=null] 
-	:
+entryRuleXAndExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAndExpressionRule()); }
-	 iv_ruleXAndExpression=ruleXAndExpression 
-	 { $current=$iv_ruleXAndExpression.current; } 
-	 EOF 
-;
+	iv_ruleXAndExpression=ruleXAndExpression
+	{ $current=$iv_ruleXAndExpression.current; }
+	EOF;
 
 // Rule XAndExpression
-ruleXAndExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
-    }
-    this_XEqualityExpression_0=ruleXEqualityExpression
-    { 
-        $current = $this_XEqualityExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpAnd
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXAndExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAndExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpAnd		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXEqualityExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XEqualityExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
+		}
+		this_XEqualityExpression_0=ruleXEqualityExpression
+		{
+			$current = $this_XEqualityExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpAnd
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXAndExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpAnd
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXEqualityExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XEqualityExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpAnd
-entryRuleOpAnd returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpAndRule()); } 
-	 iv_ruleOpAnd=ruleOpAnd 
-	 { $current=$iv_ruleOpAnd.current.getText(); }  
-	 EOF 
-;
+entryRuleOpAnd returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpAndRule()); }
+	iv_ruleOpAnd=ruleOpAnd
+	{ $current=$iv_ruleOpAnd.current.getText(); }
+	EOF;
 
 // Rule OpAnd
-ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-	kw='&&' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
-    }
-
-    ;
-
-
-
-
+ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	kw='&&'
+	{
+		$current.merge(kw);
+		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
+	}
+;
 
 // Entry rule entryRuleXEqualityExpression
-entryRuleXEqualityExpression returns [EObject current=null] 
-	:
+entryRuleXEqualityExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXEqualityExpressionRule()); }
-	 iv_ruleXEqualityExpression=ruleXEqualityExpression 
-	 { $current=$iv_ruleXEqualityExpression.current; } 
-	 EOF 
-;
+	iv_ruleXEqualityExpression=ruleXEqualityExpression
+	{ $current=$iv_ruleXEqualityExpression.current; }
+	EOF;
 
 // Rule XEqualityExpression
-ruleXEqualityExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
-    }
-    this_XRelationalExpression_0=ruleXRelationalExpression
-    { 
-        $current = $this_XRelationalExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpEquality
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXEqualityExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXEqualityExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpEquality		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXRelationalExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XRelationalExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0());
+		}
+		this_XRelationalExpression_0=ruleXRelationalExpression
+		{
+			$current = $this_XRelationalExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpEquality
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpEquality
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXRelationalExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XRelationalExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpEquality
-entryRuleOpEquality returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpEqualityRule()); } 
-	 iv_ruleOpEquality=ruleOpEquality 
-	 { $current=$iv_ruleOpEquality.current.getText(); }  
-	 EOF 
-;
+entryRuleOpEquality returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpEqualityRule()); }
+	iv_ruleOpEquality=ruleOpEquality
+	{ $current=$iv_ruleOpEquality.current.getText(); }
+	EOF;
 
 // Rule OpEquality
-ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='==' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
-    }
-
-    |
-	kw='!=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
-    }
-
-    |
-	kw='===' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
-    }
-
-    |
-	kw='!==' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='=='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0());
+		}
+		    |
+		kw='!='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1());
+		}
+		    |
+		kw='==='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2());
+		}
+		    |
+		kw='!=='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3());
+		}
+	)
+;
 
 // Entry rule entryRuleXRelationalExpression
-entryRuleXRelationalExpression returns [EObject current=null] 
-	:
+entryRuleXRelationalExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXRelationalExpressionRule()); }
-	 iv_ruleXRelationalExpression=ruleXRelationalExpression 
-	 { $current=$iv_ruleXRelationalExpression.current; } 
-	 EOF 
-;
+	iv_ruleXRelationalExpression=ruleXRelationalExpression
+	{ $current=$iv_ruleXRelationalExpression.current; }
+	EOF;
 
 // Rule XRelationalExpression
-ruleXRelationalExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
-    }
-    this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression
-    { 
-        $current = $this_XOtherOperatorExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-((((((
-)	'instanceof' 
-))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
-            $current);
-    }
-)	otherlv_2='instanceof' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
-	    }
-		lv_type_3_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"type",
-        		lv_type_3_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |(((((
-)(
-(
-		ruleOpCompare
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXRelationalExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXRelationalExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
-	    }
-		ruleOpCompare		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
-	    }
-		lv_rightOperand_6_0=ruleXOtherOperatorExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_6_0, 
-        		"XOtherOperatorExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))*)
+			newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0());
+		}
+		this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression
+		{
+			$current = $this_XOtherOperatorExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				(
+					((
+						(
+						)
+						'instanceof'
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+									$current);
+							}
+						)
+						otherlv_2='instanceof'
+						{
+							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0());
+						}
+						lv_type_3_0=ruleJvmTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+							}
+							set(
+								$current,
+								"type",
+								lv_type_3_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+			    |
+			(
+				(
+					((
+						(
+						)
+						(
+							(
+								ruleOpCompare
+							)
+						)
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+									$current);
+							}
+						)
+						(
+							(
+								{
+									if ($current==null) {
+										$current = createModelElement(grammarAccess.getXRelationalExpressionRule());
+									}
+								}
+								{
+									newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
+								}
+								ruleOpCompare
+								{
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0());
+						}
+						lv_rightOperand_6_0=ruleXOtherOperatorExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+							}
+							set(
+								$current,
+								"rightOperand",
+								lv_rightOperand_6_0,
+								"org.eclipse.xtext.xbase.Xbase.XOtherOperatorExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpCompare
-entryRuleOpCompare returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpCompareRule()); } 
-	 iv_ruleOpCompare=ruleOpCompare 
-	 { $current=$iv_ruleOpCompare.current.getText(); }  
-	 EOF 
-;
+entryRuleOpCompare returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpCompareRule()); }
+	iv_ruleOpCompare=ruleOpCompare
+	{ $current=$iv_ruleOpCompare.current.getText(); }
+	EOF;
 
 // Rule OpCompare
-ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='>=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
-    }
-
-    |(
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
-    }
-
-	kw='=' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
-    }
-)
-    |
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
-    }
-
-    |
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='>='
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0());
+		}
+		    |
+		(
+			kw='<'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
+			}
+			kw='='
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1());
+			}
+		)
+		    |
+		kw='>'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2());
+		}
+		    |
+		kw='<'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3());
+		}
+	)
+;
 
 // Entry rule entryRuleXOtherOperatorExpression
-entryRuleXOtherOperatorExpression returns [EObject current=null] 
-	:
+entryRuleXOtherOperatorExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); }
-	 iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression 
-	 { $current=$iv_ruleXOtherOperatorExpression.current; } 
-	 EOF 
-;
+	iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression
+	{ $current=$iv_ruleXOtherOperatorExpression.current; }
+	EOF;
 
 // Rule XOtherOperatorExpression
-ruleXOtherOperatorExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
-    }
-    this_XAdditiveExpression_0=ruleXAdditiveExpression
-    { 
-        $current = $this_XAdditiveExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpOther
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXOtherOperatorExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpOther		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXAdditiveExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XAdditiveExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0());
+		}
+		this_XAdditiveExpression_0=ruleXAdditiveExpression
+		{
+			$current = $this_XAdditiveExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpOther
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpOther
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXAdditiveExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XAdditiveExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpOther
-entryRuleOpOther returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpOtherRule()); } 
-	 iv_ruleOpOther=ruleOpOther 
-	 { $current=$iv_ruleOpOther.current.getText(); }  
-	 EOF 
-;
+entryRuleOpOther returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpOtherRule()); }
+	iv_ruleOpOther=ruleOpOther
+	{ $current=$iv_ruleOpOther.current.getText(); }
+	EOF;
 
 // Rule OpOther
-ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='->' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
-    }
-
-    |
-	kw='..<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
-    }
-
-    |(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
-    }
-
-	kw='..' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
-    }
-)
-    |
-	kw='..' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
-    }
-
-    |
-	kw='=>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
-    }
-
-    |(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
-    }
-((((
-	'>' 
-
-	'>' 
-))=>(
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
-    }
-
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
-    }
-))
-    |
-	kw='>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
-    }
-))
-    |(
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
-    }
-((((
-	'<' 
-
-	'<' 
-))=>(
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
-    }
-
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
-    }
-))
-    |
-	kw='<' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
-    }
-
-    |
-	kw='=>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
-    }
-))
-    |
-	kw='<>' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
-    }
-
-    |
-	kw='?:' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='->'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0());
+		}
+		    |
+		kw='..<'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1());
+		}
+		    |
+		(
+			kw='>'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0());
+			}
+			kw='..'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1());
+			}
+		)
+		    |
+		kw='..'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3());
+		}
+		    |
+		kw='=>'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4());
+		}
+		    |
+		(
+			kw='>'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0());
+			}
+			(
+				(
+					((
+						'>'
+						'>'
+					)
+					)=>
+					(
+						kw='>'
+						{
+							$current.merge(kw);
+							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0());
+						}
+						kw='>'
+						{
+							$current.merge(kw);
+							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1());
+						}
+					)
+				)
+				    |
+				kw='>'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1());
+				}
+			)
+		)
+		    |
+		(
+			kw='<'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0());
+			}
+			(
+				(
+					((
+						'<'
+						'<'
+					)
+					)=>
+					(
+						kw='<'
+						{
+							$current.merge(kw);
+							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0());
+						}
+						kw='<'
+						{
+							$current.merge(kw);
+							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1());
+						}
+					)
+				)
+				    |
+				kw='<'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1());
+				}
+				    |
+				kw='=>'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2());
+				}
+			)
+		)
+		    |
+		kw='<>'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7());
+		}
+		    |
+		kw='?:'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8());
+		}
+	)
+;
 
 // Entry rule entryRuleXAdditiveExpression
-entryRuleXAdditiveExpression returns [EObject current=null] 
-	:
+entryRuleXAdditiveExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); }
-	 iv_ruleXAdditiveExpression=ruleXAdditiveExpression 
-	 { $current=$iv_ruleXAdditiveExpression.current; } 
-	 EOF 
-;
+	iv_ruleXAdditiveExpression=ruleXAdditiveExpression
+	{ $current=$iv_ruleXAdditiveExpression.current; }
+	EOF;
 
 // Rule XAdditiveExpression
-ruleXAdditiveExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
-    }
-    this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression
-    { 
-        $current = $this_XMultiplicativeExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpAdd
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXAdditiveExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpAdd		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXMultiplicativeExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XMultiplicativeExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0());
+		}
+		this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression
+		{
+			$current = $this_XMultiplicativeExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpAdd
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpAdd
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXMultiplicativeExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XMultiplicativeExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpAdd
-entryRuleOpAdd returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpAddRule()); } 
-	 iv_ruleOpAdd=ruleOpAdd 
-	 { $current=$iv_ruleOpAdd.current.getText(); }  
-	 EOF 
-;
+entryRuleOpAdd returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpAddRule()); }
+	iv_ruleOpAdd=ruleOpAdd
+	{ $current=$iv_ruleOpAdd.current.getText(); }
+	EOF;
 
 // Rule OpAdd
-ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='+' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
-    }
-
-    |
-	kw='-' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='+'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0());
+		}
+		    |
+		kw='-'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1());
+		}
+	)
+;
 
 // Entry rule entryRuleXMultiplicativeExpression
-entryRuleXMultiplicativeExpression returns [EObject current=null] 
-	:
+entryRuleXMultiplicativeExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); }
-	 iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression 
-	 { $current=$iv_ruleXMultiplicativeExpression.current; } 
-	 EOF 
-;
+	iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression
+	{ $current=$iv_ruleXMultiplicativeExpression.current; }
+	EOF;
 
 // Rule XMultiplicativeExpression
-ruleXMultiplicativeExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
-    }
-    this_XUnaryOperation_0=ruleXUnaryOperation
-    { 
-        $current = $this_XUnaryOperation_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)(
-(
-		ruleOpMulti
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            $current);
-    }
-)(
-(
+ruleXMultiplicativeExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-	    }
-		ruleOpMulti		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
-	    }
-		lv_rightOperand_3_0=ruleXUnaryOperation		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"rightOperand",
-        		lv_rightOperand_3_0, 
-        		"XUnaryOperation");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+			newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0());
+		}
+		this_XUnaryOperation_0=ruleXUnaryOperation
+		{
+			$current = $this_XUnaryOperation_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					(
+						(
+							ruleOpMulti
+						)
+					)
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+								$current);
+						}
+					)
+					(
+						(
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
+								}
+							}
+							{
+								newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+							}
+							ruleOpMulti
+							{
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0());
+					}
+					lv_rightOperand_3_0=ruleXUnaryOperation
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
+						}
+						set(
+							$current,
+							"rightOperand",
+							lv_rightOperand_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XUnaryOperation");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpMulti
-entryRuleOpMulti returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpMultiRule()); } 
-	 iv_ruleOpMulti=ruleOpMulti 
-	 { $current=$iv_ruleOpMulti.current.getText(); }  
-	 EOF 
-;
+entryRuleOpMulti returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpMultiRule()); }
+	iv_ruleOpMulti=ruleOpMulti
+	{ $current=$iv_ruleOpMulti.current.getText(); }
+	EOF;
 
 // Rule OpMulti
-ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='*' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
-    }
-
-    |
-	kw='**' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
-    }
-
-    |
-	kw='/' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
-    }
-
-    |
-	kw='%' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='*'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0());
+		}
+		    |
+		kw='**'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1());
+		}
+		    |
+		kw='/'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2());
+		}
+		    |
+		kw='%'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3());
+		}
+	)
+;
 
 // Entry rule entryRuleXUnaryOperation
-entryRuleXUnaryOperation returns [EObject current=null] 
-	:
+entryRuleXUnaryOperation returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXUnaryOperationRule()); }
-	 iv_ruleXUnaryOperation=ruleXUnaryOperation 
-	 { $current=$iv_ruleXUnaryOperation.current; } 
-	 EOF 
-;
+	iv_ruleXUnaryOperation=ruleXUnaryOperation
+	{ $current=$iv_ruleXUnaryOperation.current; }
+	EOF;
 
 // Rule XUnaryOperation
-ruleXUnaryOperation returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
-            $current);
-    }
-)(
-(
+ruleXUnaryOperation returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					$current = forceCreateModelElement(
+						grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+						$current);
+				}
+			)
+			(
+				(
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXUnaryOperationRule());
+						}
+					}
+					{
+						newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
+					}
+					ruleOpUnary
+					{
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0());
+					}
+					lv_operand_2_0=ruleXUnaryOperation
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
+						}
+						set(
+							$current,
+							"operand",
+							lv_operand_2_0,
+							"org.eclipse.xtext.xbase.Xbase.XUnaryOperation");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)
+		    |
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXUnaryOperationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
-	    }
-		ruleOpUnary		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
-	    }
-		lv_operand_2_0=ruleXUnaryOperation		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
-	        }
-       		set(
-       			$current, 
-       			"operand",
-        		lv_operand_2_0, 
-        		"XUnaryOperation");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |
-    { 
-        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
-    }
-    this_XCastedExpression_3=ruleXCastedExpression
-    { 
-        $current = $this_XCastedExpression_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+			newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1());
+		}
+		this_XCastedExpression_3=ruleXCastedExpression
+		{
+			$current = $this_XCastedExpression_3.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpUnary
-entryRuleOpUnary returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpUnaryRule()); } 
-	 iv_ruleOpUnary=ruleOpUnary 
-	 { $current=$iv_ruleOpUnary.current.getText(); }  
-	 EOF 
-;
+entryRuleOpUnary returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpUnaryRule()); }
+	iv_ruleOpUnary=ruleOpUnary
+	{ $current=$iv_ruleOpUnary.current.getText(); }
+	EOF;
 
 // Rule OpUnary
-ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='!' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
-    }
-
-    |
-	kw='-' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
-    }
-
-    |
-	kw='+' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='!'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0());
+		}
+		    |
+		kw='-'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1());
+		}
+		    |
+		kw='+'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2());
+		}
+	)
+;
 
 // Entry rule entryRuleXCastedExpression
-entryRuleXCastedExpression returns [EObject current=null] 
-	:
+entryRuleXCastedExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXCastedExpressionRule()); }
-	 iv_ruleXCastedExpression=ruleXCastedExpression 
-	 { $current=$iv_ruleXCastedExpression.current; } 
-	 EOF 
-;
+	iv_ruleXCastedExpression=ruleXCastedExpression
+	{ $current=$iv_ruleXCastedExpression.current; }
+	EOF;
 
 // Rule XCastedExpression
-ruleXCastedExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
-    }
-    this_XPostfixOperation_0=ruleXPostfixOperation
-    { 
-        $current = $this_XPostfixOperation_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-(((((
-)	'as' 
-))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
-            $current);
-    }
-)	otherlv_2='as' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
-	    }
-		lv_type_3_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"type",
-        		lv_type_3_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)
+ruleXCastedExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0());
+		}
+		this_XPostfixOperation_0=ruleXPostfixOperation
+		{
+			$current = $this_XPostfixOperation_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				((
+					(
+					)
+					'as'
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+								$current);
+						}
+					)
+					otherlv_2='as'
+					{
+						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0());
+					}
+					lv_type_3_0=ruleJvmTypeReference
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
+						}
+						set(
+							$current,
+							"type",
+							lv_type_3_0,
+							"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXPostfixOperation
-entryRuleXPostfixOperation returns [EObject current=null] 
-	:
+entryRuleXPostfixOperation returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXPostfixOperationRule()); }
-	 iv_ruleXPostfixOperation=ruleXPostfixOperation 
-	 { $current=$iv_ruleXPostfixOperation.current; } 
-	 EOF 
-;
+	iv_ruleXPostfixOperation=ruleXPostfixOperation
+	{ $current=$iv_ruleXPostfixOperation.current; }
+	EOF;
 
 // Rule XPostfixOperation
-ruleXPostfixOperation returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
-    }
-    this_XMemberFeatureCall_0=ruleXMemberFeatureCall
-    { 
-        $current = $this_XMemberFeatureCall_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-((((
-)(
-(
-		ruleOpPostfix
-)
-)))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
-            $current);
-    }
-)(
-(
+ruleXPostfixOperation returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXPostfixOperationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
-	    }
-		ruleOpPostfix		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))?)
+			newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0());
+		}
+		this_XMemberFeatureCall_0=ruleXMemberFeatureCall
+		{
+			$current = $this_XMemberFeatureCall_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			((
+				(
+				)
+				(
+					(
+						ruleOpPostfix
+					)
+				)
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElementAndSet(
+							grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+							$current);
+					}
+				)
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXPostfixOperationRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0());
+						}
+						ruleOpPostfix
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleOpPostfix
-entryRuleOpPostfix returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getOpPostfixRule()); } 
-	 iv_ruleOpPostfix=ruleOpPostfix 
-	 { $current=$iv_ruleOpPostfix.current.getText(); }  
-	 EOF 
-;
+entryRuleOpPostfix returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getOpPostfixRule()); }
+	iv_ruleOpPostfix=ruleOpPostfix
+	{ $current=$iv_ruleOpPostfix.current.getText(); }
+	EOF;
 
 // Rule OpPostfix
-ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='++' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
-    }
-
-    |
-	kw='--' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
-    }
-)
-    ;
-
-
-
-
+ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='++'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0());
+		}
+		    |
+		kw='--'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1());
+		}
+	)
+;
 
 // Entry rule entryRuleXMemberFeatureCall
-entryRuleXMemberFeatureCall returns [EObject current=null] 
-	:
+entryRuleXMemberFeatureCall returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); }
-	 iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall 
-	 { $current=$iv_ruleXMemberFeatureCall.current; } 
-	 EOF 
-;
+	iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall
+	{ $current=$iv_ruleXMemberFeatureCall.current; }
+	EOF;
 
 // Rule XMemberFeatureCall
-ruleXMemberFeatureCall returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
-    }
-    this_XPrimaryExpression_0=ruleXPrimaryExpression
-    { 
-        $current = $this_XPrimaryExpression_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-((((((
-)(	'.' 
-
-    |(
-(
-	'::' 
- 
-
-)
-))(
-(
-		ruleFeatureCallID
-)
-)	ruleOpSingleAssign))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
-            $current);
-    }
-)(	otherlv_2='.' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
-    }
-
-    |(
-(
-		lv_explicitStatic_3_0=	'::' 
-    {
-        newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitStatic", true, "::");
-	    }
-
-)
-))(
-(
+ruleXMemberFeatureCall returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
-	    }
-		ruleFeatureCallID		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    { 
-        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
-    }
-ruleOpSingleAssign
-    { 
-        afterParserOrEnumRuleCall();
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
-	    }
-		lv_value_6_0=ruleXAssignment		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_6_0, 
-        		"XAssignment");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |(((((
-)(	'.' 
-
-    |(
-(
-	'?.' 
- 
-
-)
-)
-    |(
-(
-	'::' 
- 
-
-)
-))))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
-            $current);
-    }
-)(	otherlv_8='.' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
-    }
-
-    |(
-(
-		lv_nullSafe_9_0=	'?.' 
-    {
-        newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "nullSafe", true, "?.");
-	    }
-
-)
-)
-    |(
-(
-		lv_explicitStatic_10_0=	'::' 
-    {
-        newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitStatic", true, "::");
-	    }
-
-)
-))))(	otherlv_11='<' 
-    {
-    	newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
-	    }
-		lv_typeArguments_12_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_12_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_13=',' 
-    {
-    	newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
-	    }
-		lv_typeArguments_14_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_14_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_15='>' 
-    {
-    	newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
-    }
-)?(
-(
+			newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0());
+		}
+		this_XPrimaryExpression_0=ruleXPrimaryExpression
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
-	    }
-		ruleIdOrSuper		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((
-(
-	'(' 
- 
-
-)
-)=>
-(
-		lv_explicitOperationCall_17_0=	'(' 
-    {
-        newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitOperationCall", true, "(");
-	    }
-
-)
-)(((((
-)((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
-	    }
-		lv_memberCallArguments_18_0=ruleXShortClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"memberCallArguments",
-        		lv_memberCallArguments_18_0, 
-        		"XShortClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    |((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
-	    }
-		lv_memberCallArguments_19_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"memberCallArguments",
-        		lv_memberCallArguments_19_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_20=',' 
-    {
-    	newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
-	    }
-		lv_memberCallArguments_21_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"memberCallArguments",
-        		lv_memberCallArguments_21_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*))?	otherlv_22=')' 
-    {
-    	newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
-    }
-)?((((
-)	'[' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
-	    }
-		lv_memberCallArguments_23_0=ruleXClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"memberCallArguments",
-        		lv_memberCallArguments_23_0, 
-        		"XClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?))*)
+			$current = $this_XPrimaryExpression_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				(
+					((
+						(
+						)
+						(
+							'.'
+							    |
+							(
+								(
+									'::'
+								)
+							)
+						)
+						(
+							(
+								ruleFeatureCallID
+							)
+						)
+						ruleOpSingleAssign
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
+									$current);
+							}
+						)
+						(
+							otherlv_2='.'
+							{
+								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
+							}
+							    |
+							(
+								(
+									lv_explicitStatic_3_0='::'
+									{
+										newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+										}
+										setWithLastConsumed($current, "explicitStatic", true, "::");
+									}
+								)
+							)
+						)
+						(
+							(
+								{
+									if ($current==null) {
+										$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+									}
+								}
+								{
+									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0());
+								}
+								ruleFeatureCallID
+								{
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+						{
+							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3());
+						}
+						ruleOpSingleAssign
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0());
+						}
+						lv_value_6_0=ruleXAssignment
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+							}
+							set(
+								$current,
+								"value",
+								lv_value_6_0,
+								"org.eclipse.xtext.xbase.Xbase.XAssignment");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+			    |
+			(
+				(
+					((
+						(
+						)
+						(
+							'.'
+							    |
+							(
+								(
+									'?.'
+								)
+							)
+							    |
+							(
+								(
+									'::'
+								)
+							)
+						)
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
+									$current);
+							}
+						)
+						(
+							otherlv_8='.'
+							{
+								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
+							}
+							    |
+							(
+								(
+									lv_nullSafe_9_0='?.'
+									{
+										newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+										}
+										setWithLastConsumed($current, "nullSafe", true, "?.");
+									}
+								)
+							)
+							    |
+							(
+								(
+									lv_explicitStatic_10_0='::'
+									{
+										newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+										}
+										setWithLastConsumed($current, "explicitStatic", true, "::");
+									}
+								)
+							)
+						)
+					)
+				)
+				(
+					otherlv_11='<'
+					{
+						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0());
+							}
+							lv_typeArguments_12_0=ruleJvmArgumentTypeReference
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+								}
+								add(
+									$current,
+									"typeArguments",
+									lv_typeArguments_12_0,
+									"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_13=','
+						{
+							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0());
+								}
+								lv_typeArguments_14_0=ruleJvmArgumentTypeReference
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+									}
+									add(
+										$current,
+										"typeArguments",
+										lv_typeArguments_14_0,
+										"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+					otherlv_15='>'
+					{
+						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
+					}
+				)?
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0());
+						}
+						ruleIdOrSuper
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						((
+							'('
+						)
+						)=>
+						(
+							lv_explicitOperationCall_17_0='('
+							{
+								newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
+							}
+							{
+								if ($current==null) {
+									$current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+								}
+								setWithLastConsumed($current, "explicitOperationCall", true, "(");
+							}
+						)
+					)
+					(
+						(
+							((
+								(
+								)
+								(
+									(
+										(
+											ruleJvmFormalParameter
+										)
+									)
+									(
+										','
+										(
+											(
+												ruleJvmFormalParameter
+											)
+										)
+									)*
+								)?
+								(
+									(
+										'|'
+									)
+								)
+							)
+							)=>
+							(
+								{
+									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0());
+								}
+								lv_memberCallArguments_18_0=ruleXShortClosure
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+									}
+									add(
+										$current,
+										"memberCallArguments",
+										lv_memberCallArguments_18_0,
+										"org.eclipse.xtext.xbase.Xbase.XShortClosure");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+						    |
+						(
+							(
+								(
+									{
+										newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0());
+									}
+									lv_memberCallArguments_19_0=ruleXExpression
+									{
+										if ($current==null) {
+											$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+										}
+										add(
+											$current,
+											"memberCallArguments",
+											lv_memberCallArguments_19_0,
+											"org.eclipse.xtext.xbase.Xbase.XExpression");
+										afterParserOrEnumRuleCall();
+									}
+								)
+							)
+							(
+								otherlv_20=','
+								{
+									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
+								}
+								(
+									(
+										{
+											newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0());
+										}
+										lv_memberCallArguments_21_0=ruleXExpression
+										{
+											if ($current==null) {
+												$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+											}
+											add(
+												$current,
+												"memberCallArguments",
+												lv_memberCallArguments_21_0,
+												"org.eclipse.xtext.xbase.Xbase.XExpression");
+											afterParserOrEnumRuleCall();
+										}
+									)
+								)
+							)*
+						)
+					)?
+					otherlv_22=')'
+					{
+						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
+					}
+				)?
+				(
+					((
+						(
+						)
+						'['
+					)
+					)=>
+					(
+						{
+							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0());
+						}
+						lv_memberCallArguments_23_0=ruleXClosure
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+							}
+							add(
+								$current,
+								"memberCallArguments",
+								lv_memberCallArguments_23_0,
+								"org.eclipse.xtext.xbase.Xbase.XClosure");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)?
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXPrimaryExpression
-entryRuleXPrimaryExpression returns [EObject current=null] 
-	:
+entryRuleXPrimaryExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); }
-	 iv_ruleXPrimaryExpression=ruleXPrimaryExpression 
-	 { $current=$iv_ruleXPrimaryExpression.current; } 
-	 EOF 
-;
+	iv_ruleXPrimaryExpression=ruleXPrimaryExpression
+	{ $current=$iv_ruleXPrimaryExpression.current; }
+	EOF;
 
 // Rule XPrimaryExpression
-ruleXPrimaryExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
-    }
-    this_XConstructorCall_0=ruleXConstructorCall
-    { 
-        $current = $this_XConstructorCall_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
-    }
-    this_XBlockExpression_1=ruleXBlockExpression
-    { 
-        $current = $this_XBlockExpression_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
-    }
-    this_XSwitchExpression_2=ruleXSwitchExpression
-    { 
-        $current = $this_XSwitchExpression_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |((((
-)	'synchronized' 
-	'(' 
-))=>
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
-    }
-    this_XSynchronizedExpression_3=ruleXSynchronizedExpression
-    { 
-        $current = $this_XSynchronizedExpression_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
-    }
-    this_XFeatureCall_4=ruleXFeatureCall
-    { 
-        $current = $this_XFeatureCall_4.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
-    }
-    this_XLiteral_5=ruleXLiteral
-    { 
-        $current = $this_XLiteral_5.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
-    }
-    this_XIfExpression_6=ruleXIfExpression
-    { 
-        $current = $this_XIfExpression_6.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |((((
-)	'for' 
-	'(' 
-(
-(
-ruleJvmFormalParameter
-)
-)	':' 
-))=>
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
-    }
-    this_XForLoopExpression_7=ruleXForLoopExpression
-    { 
-        $current = $this_XForLoopExpression_7.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
-    }
-    this_XBasicForLoopExpression_8=ruleXBasicForLoopExpression
-    { 
-        $current = $this_XBasicForLoopExpression_8.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
-    }
-    this_XWhileExpression_9=ruleXWhileExpression
-    { 
-        $current = $this_XWhileExpression_9.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
-    }
-    this_XDoWhileExpression_10=ruleXDoWhileExpression
-    { 
-        $current = $this_XDoWhileExpression_10.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
-    }
-    this_XThrowExpression_11=ruleXThrowExpression
-    { 
-        $current = $this_XThrowExpression_11.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
-    }
-    this_XReturnExpression_12=ruleXReturnExpression
-    { 
-        $current = $this_XReturnExpression_12.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
-    }
-    this_XTryCatchFinallyExpression_13=ruleXTryCatchFinallyExpression
-    { 
-        $current = $this_XTryCatchFinallyExpression_13.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
-    }
-    this_XParenthesizedExpression_14=ruleXParenthesizedExpression
-    { 
-        $current = $this_XParenthesizedExpression_14.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXPrimaryExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0());
+		}
+		this_XConstructorCall_0=ruleXConstructorCall
+		{
+			$current = $this_XConstructorCall_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1());
+		}
+		this_XBlockExpression_1=ruleXBlockExpression
+		{
+			$current = $this_XBlockExpression_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2());
+		}
+		this_XSwitchExpression_2=ruleXSwitchExpression
+		{
+			$current = $this_XSwitchExpression_2.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		(
+			((
+				(
+				)
+				'synchronized'
+				'('
+			)
+			)=>
+			{
+				newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3());
+			}
+			this_XSynchronizedExpression_3=ruleXSynchronizedExpression
+			{
+				$current = $this_XSynchronizedExpression_3.current;
+				afterParserOrEnumRuleCall();
+			}
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4());
+		}
+		this_XFeatureCall_4=ruleXFeatureCall
+		{
+			$current = $this_XFeatureCall_4.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5());
+		}
+		this_XLiteral_5=ruleXLiteral
+		{
+			$current = $this_XLiteral_5.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6());
+		}
+		this_XIfExpression_6=ruleXIfExpression
+		{
+			$current = $this_XIfExpression_6.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		(
+			((
+				(
+				)
+				'for'
+				'('
+				(
+					(
+						ruleJvmFormalParameter
+					)
+				)
+				':'
+			)
+			)=>
+			{
+				newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7());
+			}
+			this_XForLoopExpression_7=ruleXForLoopExpression
+			{
+				$current = $this_XForLoopExpression_7.current;
+				afterParserOrEnumRuleCall();
+			}
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8());
+		}
+		this_XBasicForLoopExpression_8=ruleXBasicForLoopExpression
+		{
+			$current = $this_XBasicForLoopExpression_8.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9());
+		}
+		this_XWhileExpression_9=ruleXWhileExpression
+		{
+			$current = $this_XWhileExpression_9.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10());
+		}
+		this_XDoWhileExpression_10=ruleXDoWhileExpression
+		{
+			$current = $this_XDoWhileExpression_10.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11());
+		}
+		this_XThrowExpression_11=ruleXThrowExpression
+		{
+			$current = $this_XThrowExpression_11.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12());
+		}
+		this_XReturnExpression_12=ruleXReturnExpression
+		{
+			$current = $this_XReturnExpression_12.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13());
+		}
+		this_XTryCatchFinallyExpression_13=ruleXTryCatchFinallyExpression
+		{
+			$current = $this_XTryCatchFinallyExpression_13.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14());
+		}
+		this_XParenthesizedExpression_14=ruleXParenthesizedExpression
+		{
+			$current = $this_XParenthesizedExpression_14.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXLiteral
-entryRuleXLiteral returns [EObject current=null] 
-	:
+entryRuleXLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXLiteralRule()); }
-	 iv_ruleXLiteral=ruleXLiteral 
-	 { $current=$iv_ruleXLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXLiteral=ruleXLiteral
+	{ $current=$iv_ruleXLiteral.current; }
+	EOF;
 
 // Rule XLiteral
-ruleXLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
-    }
-    this_XCollectionLiteral_0=ruleXCollectionLiteral
-    { 
-        $current = $this_XCollectionLiteral_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |((((
-)	'[' 
-))=>
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
-    }
-    this_XClosure_1=ruleXClosure
-    { 
-        $current = $this_XClosure_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
-    }
-    this_XBooleanLiteral_2=ruleXBooleanLiteral
-    { 
-        $current = $this_XBooleanLiteral_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
-    }
-    this_XNumberLiteral_3=ruleXNumberLiteral
-    { 
-        $current = $this_XNumberLiteral_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
-    }
-    this_XNullLiteral_4=ruleXNullLiteral
-    { 
-        $current = $this_XNullLiteral_4.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
-    }
-    this_XStringLiteral_5=ruleXStringLiteral
-    { 
-        $current = $this_XStringLiteral_5.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
-    }
-    this_XTypeLiteral_6=ruleXTypeLiteral
-    { 
-        $current = $this_XTypeLiteral_6.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0());
+		}
+		this_XCollectionLiteral_0=ruleXCollectionLiteral
+		{
+			$current = $this_XCollectionLiteral_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		(
+			((
+				(
+				)
+				'['
+			)
+			)=>
+			{
+				newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1());
+			}
+			this_XClosure_1=ruleXClosure
+			{
+				$current = $this_XClosure_1.current;
+				afterParserOrEnumRuleCall();
+			}
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2());
+		}
+		this_XBooleanLiteral_2=ruleXBooleanLiteral
+		{
+			$current = $this_XBooleanLiteral_2.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3());
+		}
+		this_XNumberLiteral_3=ruleXNumberLiteral
+		{
+			$current = $this_XNumberLiteral_3.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4());
+		}
+		this_XNullLiteral_4=ruleXNullLiteral
+		{
+			$current = $this_XNullLiteral_4.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5());
+		}
+		this_XStringLiteral_5=ruleXStringLiteral
+		{
+			$current = $this_XStringLiteral_5.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6());
+		}
+		this_XTypeLiteral_6=ruleXTypeLiteral
+		{
+			$current = $this_XTypeLiteral_6.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXCollectionLiteral
-entryRuleXCollectionLiteral returns [EObject current=null] 
-	:
+entryRuleXCollectionLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXCollectionLiteralRule()); }
-	 iv_ruleXCollectionLiteral=ruleXCollectionLiteral 
-	 { $current=$iv_ruleXCollectionLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXCollectionLiteral=ruleXCollectionLiteral
+	{ $current=$iv_ruleXCollectionLiteral.current; }
+	EOF;
 
 // Rule XCollectionLiteral
-ruleXCollectionLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
-    }
-    this_XSetLiteral_0=ruleXSetLiteral
-    { 
-        $current = $this_XSetLiteral_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
-    }
-    this_XListLiteral_1=ruleXListLiteral
-    { 
-        $current = $this_XListLiteral_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleXCollectionLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0());
+		}
+		this_XSetLiteral_0=ruleXSetLiteral
+		{
+			$current = $this_XSetLiteral_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1());
+		}
+		this_XListLiteral_1=ruleXListLiteral
+		{
+			$current = $this_XListLiteral_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXSetLiteral
-entryRuleXSetLiteral returns [EObject current=null] 
-	:
+entryRuleXSetLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXSetLiteralRule()); }
-	 iv_ruleXSetLiteral=ruleXSetLiteral 
-	 { $current=$iv_ruleXSetLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXSetLiteral=ruleXSetLiteral
+	{ $current=$iv_ruleXSetLiteral.current; }
+	EOF;
 
 // Rule XSetLiteral
-ruleXSetLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
-            $current);
-    }
-)	otherlv_1='#' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
-    }
-	otherlv_2='{' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
-	    }
-		lv_elements_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
-	    }
-		lv_elements_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6='}' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
-    }
-)
+ruleXSetLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='#'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
+		}
+		otherlv_2='{'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+					}
+					lv_elements_3_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+						}
+						add(
+							$current,
+							"elements",
+							lv_elements_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_4=','
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+						}
+						lv_elements_5_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+							}
+							add(
+								$current,
+								"elements",
+								lv_elements_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+		)?
+		otherlv_6='}'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXListLiteral
-entryRuleXListLiteral returns [EObject current=null] 
-	:
+entryRuleXListLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXListLiteralRule()); }
-	 iv_ruleXListLiteral=ruleXListLiteral 
-	 { $current=$iv_ruleXListLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXListLiteral=ruleXListLiteral
+	{ $current=$iv_ruleXListLiteral.current; }
+	EOF;
 
 // Rule XListLiteral
-ruleXListLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
-            $current);
-    }
-)	otherlv_1='#' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
-    }
-	otherlv_2='[' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
-	    }
-		lv_elements_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
-	    }
-		lv_elements_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6=']' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
-    }
-)
+ruleXListLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='#'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
+		}
+		otherlv_2='['
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+					}
+					lv_elements_3_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+						}
+						add(
+							$current,
+							"elements",
+							lv_elements_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_4=','
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+						}
+						lv_elements_5_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+							}
+							add(
+								$current,
+								"elements",
+								lv_elements_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+		)?
+		otherlv_6=']'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXClosure
-entryRuleXClosure returns [EObject current=null] 
-	:
+entryRuleXClosure returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXClosureRule()); }
-	 iv_ruleXClosure=ruleXClosure 
-	 { $current=$iv_ruleXClosure.current; } 
-	 EOF 
-;
+	iv_ruleXClosure=ruleXClosure
+	{ $current=$iv_ruleXClosure.current; }
+	EOF;
 
 // Rule XClosure
-ruleXClosure returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-)	'[' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
-            $current);
-    }
-)	otherlv_1='[' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
-    }
-))(((((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>(((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
-	    }
-		lv_declaredFormalParameters_2_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"declaredFormalParameters",
-        		lv_declaredFormalParameters_2_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3=',' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
-	    }
-		lv_declaredFormalParameters_4_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"declaredFormalParameters",
-        		lv_declaredFormalParameters_4_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?(
-(
-		lv_explicitSyntax_5_0=	'|' 
-    {
-        newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXClosureRule());
-	        }
-       		setWithLastConsumed($current, "explicitSyntax", true, "|");
-	    }
-
-)
-)))?(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
-	    }
-		lv_expression_6_0=ruleXExpressionInClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_6_0, 
-        		"XExpressionInClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_7=']' 
-    {
-    	newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
-    }
-)
+ruleXClosure returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+				)
+				'['
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElement(
+							grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
+							$current);
+					}
+				)
+				otherlv_1='['
+				{
+					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
+				}
+			)
+		)
+		(
+			((
+				(
+					(
+						(
+							ruleJvmFormalParameter
+						)
+					)
+					(
+						','
+						(
+							(
+								ruleJvmFormalParameter
+							)
+						)
+					)*
+				)?
+				(
+					(
+						'|'
+					)
+				)
+			)
+			)=>
+			(
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0());
+							}
+							lv_declaredFormalParameters_2_0=ruleJvmFormalParameter
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXClosureRule());
+								}
+								add(
+									$current,
+									"declaredFormalParameters",
+									lv_declaredFormalParameters_2_0,
+									"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_3=','
+						{
+							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0());
+								}
+								lv_declaredFormalParameters_4_0=ruleJvmFormalParameter
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXClosureRule());
+									}
+									add(
+										$current,
+										"declaredFormalParameters",
+										lv_declaredFormalParameters_4_0,
+										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)?
+				(
+					(
+						lv_explicitSyntax_5_0='|'
+						{
+							newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXClosureRule());
+							}
+							setWithLastConsumed($current, "explicitSyntax", true, "|");
+						}
+					)
+				)
+			)
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0());
+				}
+				lv_expression_6_0=ruleXExpressionInClosure
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXClosureRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_6_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpressionInClosure");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_7=']'
+		{
+			newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXExpressionInClosure
-entryRuleXExpressionInClosure returns [EObject current=null] 
-	:
+entryRuleXExpressionInClosure returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXExpressionInClosureRule()); }
-	 iv_ruleXExpressionInClosure=ruleXExpressionInClosure 
-	 { $current=$iv_ruleXExpressionInClosure.current; } 
-	 EOF 
-;
+	iv_ruleXExpressionInClosure=ruleXExpressionInClosure
+	{ $current=$iv_ruleXExpressionInClosure.current; }
+	EOF;
 
 // Rule XExpressionInClosure
-ruleXExpressionInClosure returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
-            $current);
-    }
-)((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
-	    }
-		lv_expressions_1_0=ruleXExpressionOrVarDeclaration		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"expressions",
-        		lv_expressions_1_0, 
-        		"XExpressionOrVarDeclaration");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_2=';' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
-    }
-)?)*)
+ruleXExpressionInClosure returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0());
+					}
+					lv_expressions_1_0=ruleXExpressionOrVarDeclaration
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
+						}
+						add(
+							$current,
+							"expressions",
+							lv_expressions_1_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_2=';'
+				{
+					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+				}
+			)?
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXShortClosure
-entryRuleXShortClosure returns [EObject current=null] 
-	:
+entryRuleXShortClosure returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXShortClosureRule()); }
-	 iv_ruleXShortClosure=ruleXShortClosure 
-	 { $current=$iv_ruleXShortClosure.current; } 
-	 EOF 
-;
+	iv_ruleXShortClosure=ruleXShortClosure
+	{ $current=$iv_ruleXShortClosure.current; }
+	EOF;
 
 // Rule XShortClosure
-ruleXShortClosure returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-)((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
-            $current);
-    }
-)((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
-	    }
-		lv_declaredFormalParameters_1_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"declaredFormalParameters",
-        		lv_declaredFormalParameters_1_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_2=',' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
-	    }
-		lv_declaredFormalParameters_3_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
-	        }
-       		add(
-       			$current, 
-       			"declaredFormalParameters",
-        		lv_declaredFormalParameters_3_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?(
-(
-		lv_explicitSyntax_4_0=	'|' 
-    {
-        newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXShortClosureRule());
-	        }
-       		setWithLastConsumed($current, "explicitSyntax", true, "|");
-	    }
-
-)
-)))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
-	    }
-		lv_expression_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXShortClosure returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+				)
+				(
+					(
+						(
+							ruleJvmFormalParameter
+						)
+					)
+					(
+						','
+						(
+							(
+								ruleJvmFormalParameter
+							)
+						)
+					)*
+				)?
+				(
+					(
+						'|'
+					)
+				)
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElement(
+							grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
+							$current);
+					}
+				)
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0());
+							}
+							lv_declaredFormalParameters_1_0=ruleJvmFormalParameter
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+								}
+								add(
+									$current,
+									"declaredFormalParameters",
+									lv_declaredFormalParameters_1_0,
+									"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_2=','
+						{
+							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0());
+								}
+								lv_declaredFormalParameters_3_0=ruleJvmFormalParameter
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+									}
+									add(
+										$current,
+										"declaredFormalParameters",
+										lv_declaredFormalParameters_3_0,
+										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)?
+				(
+					(
+						lv_explicitSyntax_4_0='|'
+						{
+							newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getXShortClosureRule());
+							}
+							setWithLastConsumed($current, "explicitSyntax", true, "|");
+						}
+					)
+				)
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0());
+				}
+				lv_expression_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXParenthesizedExpression
-entryRuleXParenthesizedExpression returns [EObject current=null] 
-	:
+entryRuleXParenthesizedExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); }
-	 iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression 
-	 { $current=$iv_ruleXParenthesizedExpression.current; } 
-	 EOF 
-;
+	iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression
+	{ $current=$iv_ruleXParenthesizedExpression.current; }
+	EOF;
 
 // Rule XParenthesizedExpression
-ruleXParenthesizedExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='(' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
-    }
-
-    { 
-        newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
-    }
-    this_XExpression_1=ruleXExpression
-    { 
-        $current = $this_XExpression_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-	otherlv_2=')' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXIfExpression
-entryRuleXIfExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXIfExpressionRule()); }
-	 iv_ruleXIfExpression=ruleXIfExpression 
-	 { $current=$iv_ruleXIfExpression.current; } 
-	 EOF 
-;
-
-// Rule XIfExpression
-ruleXIfExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='if' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
-	    }
-		lv_if_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"if",
-        		lv_if_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=')' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
-	    }
-		lv_then_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"then",
-        		lv_then_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'else' 
-)=>	otherlv_6='else' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
-	    }
-		lv_else_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"else",
-        		lv_else_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
-;
-
-
-
-
-
-// Entry rule entryRuleXSwitchExpression
-entryRuleXSwitchExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXSwitchExpressionRule()); }
-	 iv_ruleXSwitchExpression=ruleXSwitchExpression 
-	 { $current=$iv_ruleXSwitchExpression.current; } 
-	 EOF 
-;
-
-// Rule XSwitchExpression
-ruleXSwitchExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='switch' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
-    }
-(((((	'(' 
-(
-(
-ruleJvmFormalParameter
-)
-)	':' 
-))=>(	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
-	    }
-		lv_declaredParam_3_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"declaredParam",
-        		lv_declaredParam_3_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=':' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
-	    }
-		lv_switch_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"switch",
-        		lv_switch_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_6=')' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
-    }
-)
-    |(((((
-(
-ruleJvmFormalParameter
-)
-)	':' 
-))=>((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
-	    }
-		lv_declaredParam_7_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"declaredParam",
-        		lv_declaredParam_7_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_8=':' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
-    }
-))?(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
-	    }
-		lv_switch_9_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"switch",
-        		lv_switch_9_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))	otherlv_10='{' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
-	    }
-		lv_cases_11_0=ruleXCasePart		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"cases",
-        		lv_cases_11_0, 
-        		"XCasePart");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(	otherlv_12='default' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
-    }
-	otherlv_13=':' 
-    {
-    	newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
-	    }
-		lv_default_14_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"default",
-        		lv_default_14_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?	otherlv_15='}' 
-    {
-    	newLeafNode(otherlv_15, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXCasePart
-entryRuleXCasePart returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXCasePartRule()); }
-	 iv_ruleXCasePart=ruleXCasePart 
-	 { $current=$iv_ruleXCasePart.current; } 
-	 EOF 
-;
-
-// Rule XCasePart
-ruleXCasePart returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
-            $current);
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeGuard_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
-	        }
-       		set(
-       			$current, 
-       			"typeGuard",
-        		lv_typeGuard_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?(	otherlv_2='case' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
-	    }
-		lv_case_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
-	        }
-       		set(
-       			$current, 
-       			"case",
-        		lv_case_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?((	otherlv_4=':' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
-	    }
-		lv_then_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
-	        }
-       		set(
-       			$current, 
-       			"then",
-        		lv_then_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-    |(
-(
-		lv_fallThrough_6_0=	',' 
-    {
-        newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXCasePartRule());
-	        }
-       		setWithLastConsumed($current, "fallThrough", true, ",");
-	    }
-
-)
-)))
-;
-
-
-
-
-
-// Entry rule entryRuleXForLoopExpression
-entryRuleXForLoopExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXForLoopExpressionRule()); }
-	 iv_ruleXForLoopExpression=ruleXForLoopExpression 
-	 { $current=$iv_ruleXForLoopExpression.current; } 
-	 EOF 
-;
-
-// Rule XForLoopExpression
-ruleXForLoopExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-)	'for' 
-	'(' 
-(
-(
-ruleJvmFormalParameter
-)
-)	':' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
-            $current);
-    }
-)	otherlv_1='for' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
-	    }
-		lv_declaredParam_3_0=ruleJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"declaredParam",
-        		lv_declaredParam_3_0, 
-        		"JvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=':' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
-	    }
-		lv_forExpression_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"forExpression",
-        		lv_forExpression_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_6=')' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
-	    }
-		lv_eachExpression_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"eachExpression",
-        		lv_eachExpression_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXBasicForLoopExpression
-entryRuleXBasicForLoopExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); }
-	 iv_ruleXBasicForLoopExpression=ruleXBasicForLoopExpression 
-	 { $current=$iv_ruleXBasicForLoopExpression.current; } 
-	 EOF 
-;
-
-// Rule XBasicForLoopExpression
-ruleXBasicForLoopExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='for' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
-	    }
-		lv_initExpressions_3_0=ruleXExpressionOrVarDeclaration		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"initExpressions",
-        		lv_initExpressions_3_0, 
-        		"XExpressionOrVarDeclaration");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_4=',' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
-	    }
-		lv_initExpressions_5_0=ruleXExpressionOrVarDeclaration		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"initExpressions",
-        		lv_initExpressions_5_0, 
-        		"XExpressionOrVarDeclaration");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_6=';' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
-	    }
-		lv_expression_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?	otherlv_8=';' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
-	    }
-		lv_updateExpressions_9_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"updateExpressions",
-        		lv_updateExpressions_9_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_10=',' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
-	    }
-		lv_updateExpressions_11_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"updateExpressions",
-        		lv_updateExpressions_11_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_12=')' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
-	    }
-		lv_eachExpression_13_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"eachExpression",
-        		lv_eachExpression_13_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXWhileExpression
-entryRuleXWhileExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXWhileExpressionRule()); }
-	 iv_ruleXWhileExpression=ruleXWhileExpression 
-	 { $current=$iv_ruleXWhileExpression.current; } 
-	 EOF 
-;
-
-// Rule XWhileExpression
-ruleXWhileExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='while' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
-	    }
-		lv_predicate_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"predicate",
-        		lv_predicate_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=')' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
-	    }
-		lv_body_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"body",
-        		lv_body_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXDoWhileExpression
-entryRuleXDoWhileExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); }
-	 iv_ruleXDoWhileExpression=ruleXDoWhileExpression 
-	 { $current=$iv_ruleXDoWhileExpression.current; } 
-	 EOF 
-;
-
-// Rule XDoWhileExpression
-ruleXDoWhileExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='do' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
-	    }
-		lv_body_2_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"body",
-        		lv_body_2_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_3='while' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
-    }
-	otherlv_4='(' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
-	    }
-		lv_predicate_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"predicate",
-        		lv_predicate_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_6=')' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXBlockExpression
-entryRuleXBlockExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXBlockExpressionRule()); }
-	 iv_ruleXBlockExpression=ruleXBlockExpression 
-	 { $current=$iv_ruleXBlockExpression.current; } 
-	 EOF 
-;
-
-// Rule XBlockExpression
-ruleXBlockExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='{' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
-	    }
-		lv_expressions_2_0=ruleXExpressionOrVarDeclaration		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"expressions",
-        		lv_expressions_2_0, 
-        		"XExpressionOrVarDeclaration");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3=';' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
-    }
-)?)*	otherlv_4='}' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXExpressionOrVarDeclaration
-entryRuleXExpressionOrVarDeclaration returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); }
-	 iv_ruleXExpressionOrVarDeclaration=ruleXExpressionOrVarDeclaration 
-	 { $current=$iv_ruleXExpressionOrVarDeclaration.current; } 
-	 EOF 
-;
-
-// Rule XExpressionOrVarDeclaration
-ruleXExpressionOrVarDeclaration returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
-    }
-    this_XVariableDeclaration_0=ruleXVariableDeclaration
-    { 
-        $current = $this_XVariableDeclaration_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
-    }
-    this_XExpression_1=ruleXExpression
-    { 
-        $current = $this_XExpression_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXVariableDeclaration
-entryRuleXVariableDeclaration returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXVariableDeclarationRule()); }
-	 iv_ruleXVariableDeclaration=ruleXVariableDeclaration 
-	 { $current=$iv_ruleXVariableDeclaration.current; } 
-	 EOF 
-;
-
-// Rule XVariableDeclaration
-ruleXVariableDeclaration returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
-            $current);
-    }
-)((
-(
-		lv_writeable_1_0=	'var' 
-    {
-        newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		setWithLastConsumed($current, "writeable", true, "var");
-	    }
-
-)
-)
-    |	otherlv_2='val' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
-    }
-)(((((
-(
-ruleJvmTypeReference
-)
-)(
-(
-ruleValidID
-)
-)))=>((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
-	    }
-		lv_type_3_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"type",
-        		lv_type_3_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
-	    }
-		lv_name_4_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_4_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))
-    |(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
-	    }
-		lv_name_5_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_5_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))(	otherlv_6='=' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
-	    }
-		lv_right_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"right",
-        		lv_right_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
-;
-
-
-
-
-
-// Entry rule entryRuleJvmFormalParameter
-entryRuleJvmFormalParameter returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getJvmFormalParameterRule()); }
-	 iv_ruleJvmFormalParameter=ruleJvmFormalParameter 
-	 { $current=$iv_ruleJvmFormalParameter.current; } 
-	 EOF 
-;
-
-// Rule JvmFormalParameter
-ruleJvmFormalParameter returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
-	    }
-		lv_parameterType_0_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
-	        }
-       		set(
-       			$current, 
-       			"parameterType",
-        		lv_parameterType_0_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
-	    }
-		lv_name_1_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleFullJvmFormalParameter
-entryRuleFullJvmFormalParameter returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); }
-	 iv_ruleFullJvmFormalParameter=ruleFullJvmFormalParameter 
-	 { $current=$iv_ruleFullJvmFormalParameter.current; } 
-	 EOF 
-;
-
-// Rule FullJvmFormalParameter
-ruleFullJvmFormalParameter returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
-	    }
-		lv_parameterType_0_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
-	        }
-       		set(
-       			$current, 
-       			"parameterType",
-        		lv_parameterType_0_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
-	    }
-		lv_name_1_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXFeatureCall
-entryRuleXFeatureCall returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXFeatureCallRule()); }
-	 iv_ruleXFeatureCall=ruleXFeatureCall 
-	 { $current=$iv_ruleXFeatureCall.current; } 
-	 EOF 
-;
-
-// Rule XFeatureCall
-ruleXFeatureCall returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
-            $current);
-    }
-)(	otherlv_1='<' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
-	    }
-		lv_typeArguments_2_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_2_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3=',' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
-	    }
-		lv_typeArguments_4_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_4_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_5='>' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
-    }
-)?(
-(
+ruleXParenthesizedExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='('
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXFeatureCallRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
-	    }
-		ruleIdOrSuper		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((
-(
-	'(' 
- 
-
-)
-)=>
-(
-		lv_explicitOperationCall_7_0=	'(' 
-    {
-        newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXFeatureCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitOperationCall", true, "(");
-	    }
-
-)
-)(((((
-)((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
-	    }
-		lv_featureCallArguments_8_0=ruleXShortClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"featureCallArguments",
-        		lv_featureCallArguments_8_0, 
-        		"XShortClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    |((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
-	    }
-		lv_featureCallArguments_9_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"featureCallArguments",
-        		lv_featureCallArguments_9_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_10=',' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
-	    }
-		lv_featureCallArguments_11_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"featureCallArguments",
-        		lv_featureCallArguments_11_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*))?	otherlv_12=')' 
-    {
-    	newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
-    }
-)?((((
-)	'[' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
-	    }
-		lv_featureCallArguments_13_0=ruleXClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
-	        }
-       		add(
-       			$current, 
-       			"featureCallArguments",
-        		lv_featureCallArguments_13_0, 
-        		"XClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?)
-;
-
-
-
-
-
-// Entry rule entryRuleFeatureCallID
-entryRuleFeatureCallID returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getFeatureCallIDRule()); } 
-	 iv_ruleFeatureCallID=ruleFeatureCallID 
-	 { $current=$iv_ruleFeatureCallID.current.getText(); }  
-	 EOF 
-;
-
-// Rule FeatureCallID
-ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
-    }
-    this_ValidID_0=ruleValidID    {
-		$current.merge(this_ValidID_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-	kw='extends' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
-    }
-
-    |
-	kw='static' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
-    }
-
-    |
-	kw='import' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
-    }
-
-    |
-	kw='extension' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleIdOrSuper
-entryRuleIdOrSuper returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getIdOrSuperRule()); } 
-	 iv_ruleIdOrSuper=ruleIdOrSuper 
-	 { $current=$iv_ruleIdOrSuper.current.getText(); }  
-	 EOF 
-;
-
-// Rule IdOrSuper
-ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
-    }
-    this_FeatureCallID_0=ruleFeatureCallID    {
-		$current.merge(this_FeatureCallID_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-	kw='super' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleXConstructorCall
-entryRuleXConstructorCall returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXConstructorCallRule()); }
-	 iv_ruleXConstructorCall=ruleXConstructorCall 
-	 { $current=$iv_ruleXConstructorCall.current; } 
-	 EOF 
-;
-
-// Rule XConstructorCall
-ruleXConstructorCall returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
-            $current);
-    }
-)	otherlv_1='new' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
-    }
-(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXConstructorCallRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'<' 
-)=>	otherlv_3='<' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
-	    }
-		lv_typeArguments_4_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_4_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_5=',' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
-	    }
-		lv_typeArguments_6_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"typeArguments",
-        		lv_typeArguments_6_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_7='>' 
-    {
-    	newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
-    }
-)?(((
-(
-	'(' 
- 
-
-)
-)=>
-(
-		lv_explicitConstructorCall_8_0=	'(' 
-    {
-        newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXConstructorCallRule());
-	        }
-       		setWithLastConsumed($current, "explicitConstructorCall", true, "(");
-	    }
-
-)
-)(((((
-)((
-(
-ruleJvmFormalParameter
-)
-)(	',' 
-(
-(
-ruleJvmFormalParameter
-)
-))*)?(
-(
-	'|' 
- 
-
-)
-)))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
-	    }
-		lv_arguments_9_0=ruleXShortClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_9_0, 
-        		"XShortClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    |((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
-	    }
-		lv_arguments_10_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_10_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_11=',' 
-    {
-    	newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
-	    }
-		lv_arguments_12_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_12_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*))?	otherlv_13=')' 
-    {
-    	newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
-    }
-)?((((
-)	'[' 
-))=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
-	    }
-		lv_arguments_14_0=ruleXClosure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_14_0, 
-        		"XClosure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?)
-;
-
-
-
-
-
-// Entry rule entryRuleXBooleanLiteral
-entryRuleXBooleanLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXBooleanLiteralRule()); }
-	 iv_ruleXBooleanLiteral=ruleXBooleanLiteral 
-	 { $current=$iv_ruleXBooleanLiteral.current; } 
-	 EOF 
-;
-
-// Rule XBooleanLiteral
-ruleXBooleanLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
-            $current);
-    }
-)(	otherlv_1='false' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
-    }
-
-    |(
-(
-		lv_isTrue_2_0=	'true' 
-    {
-        newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXBooleanLiteralRule());
-	        }
-       		setWithLastConsumed($current, "isTrue", true, "true");
-	    }
-
-)
-)))
-;
-
-
-
-
-
-// Entry rule entryRuleXNullLiteral
-entryRuleXNullLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXNullLiteralRule()); }
-	 iv_ruleXNullLiteral=ruleXNullLiteral 
-	 { $current=$iv_ruleXNullLiteral.current; } 
-	 EOF 
-;
-
-// Rule XNullLiteral
-ruleXNullLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
-            $current);
-    }
-)	otherlv_1='null' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXNumberLiteral
-entryRuleXNumberLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXNumberLiteralRule()); }
-	 iv_ruleXNumberLiteral=ruleXNumberLiteral 
-	 { $current=$iv_ruleXNumberLiteral.current; } 
-	 EOF 
-;
-
-// Rule XNumberLiteral
-ruleXNumberLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
-            $current);
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
-	    }
-		lv_value_1_0=ruleNumber		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
-	        }
-       		set(
-       			$current, 
-       			"value",
-        		lv_value_1_0, 
-        		"Number");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXStringLiteral
-entryRuleXStringLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXStringLiteralRule()); }
-	 iv_ruleXStringLiteral=ruleXStringLiteral 
-	 { $current=$iv_ruleXStringLiteral.current; } 
-	 EOF 
-;
-
-// Rule XStringLiteral
-ruleXStringLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
-            $current);
-    }
-)(
-(
-		lv_value_1_0=RULE_STRING
-		{
-			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+			newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
 		}
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXStringLiteralRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"value",
-        		lv_value_1_0, 
-        		"STRING");
-	    }
-
-)
-))
+			newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1());
+		}
+		this_XExpression_1=ruleXExpression
+		{
+			$current = $this_XExpression_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		otherlv_2=')'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
+		}
+	)
 ;
 
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXIfExpressionRule()); }
+	iv_ruleXIfExpression=ruleXIfExpression
+	{ $current=$iv_ruleXIfExpression.current; }
+	EOF;
 
+// Rule XIfExpression
+ruleXIfExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='if'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
+		}
+		otherlv_2='('
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0());
+				}
+				lv_if_3_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+					}
+					set(
+						$current,
+						"if",
+						lv_if_3_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_4=')'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0());
+				}
+				lv_then_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+					}
+					set(
+						$current,
+						"then",
+						lv_then_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				('else')=>
+				otherlv_6='else'
+				{
+					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
+				}
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0());
+					}
+					lv_else_7_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+						}
+						set(
+							$current,
+							"else",
+							lv_else_7_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+	)
+;
 
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXSwitchExpressionRule()); }
+	iv_ruleXSwitchExpression=ruleXSwitchExpression
+	{ $current=$iv_ruleXSwitchExpression.current; }
+	EOF;
 
+// Rule XSwitchExpression
+ruleXSwitchExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='switch'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
+		}
+		(
+			(
+				(
+					((
+						'('
+						(
+							(
+								ruleJvmFormalParameter
+							)
+						)
+						':'
+					)
+					)=>
+					(
+						otherlv_2='('
+						{
+							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0());
+								}
+								lv_declaredParam_3_0=ruleJvmFormalParameter
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+									}
+									set(
+										$current,
+										"declaredParam",
+										lv_declaredParam_3_0,
+										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+						otherlv_4=':'
+						{
+							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0());
+						}
+						lv_switch_5_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+							}
+							set(
+								$current,
+								"switch",
+								lv_switch_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				otherlv_6=')'
+				{
+					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
+				}
+			)
+			    |
+			(
+				(
+					((
+						(
+							(
+								ruleJvmFormalParameter
+							)
+						)
+						':'
+					)
+					)=>
+					(
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0());
+								}
+								lv_declaredParam_7_0=ruleJvmFormalParameter
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+									}
+									set(
+										$current,
+										"declaredParam",
+										lv_declaredParam_7_0,
+										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+						otherlv_8=':'
+						{
+							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
+						}
+					)
+				)?
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0());
+						}
+						lv_switch_9_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+							}
+							set(
+								$current,
+								"switch",
+								lv_switch_9_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)
+		otherlv_10='{'
+		{
+			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0());
+				}
+				lv_cases_11_0=ruleXCasePart
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+					}
+					add(
+						$current,
+						"cases",
+						lv_cases_11_0,
+						"org.eclipse.xtext.xbase.Xbase.XCasePart");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		(
+			otherlv_12='default'
+			{
+				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
+			}
+			otherlv_13=':'
+			{
+				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0());
+					}
+					lv_default_14_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+						}
+						set(
+							$current,
+							"default",
+							lv_default_14_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		otherlv_15='}'
+		{
+			newLeafNode(otherlv_15, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6());
+		}
+	)
+;
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXCasePartRule()); }
+	iv_ruleXCasePart=ruleXCasePart
+	{ $current=$iv_ruleXCasePart.current; }
+	EOF;
+
+// Rule XCasePart
+ruleXCasePart returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeGuard_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXCasePartRule());
+					}
+					set(
+						$current,
+						"typeGuard",
+						lv_typeGuard_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			otherlv_2='case'
+			{
+				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0());
+					}
+					lv_case_3_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXCasePartRule());
+						}
+						set(
+							$current,
+							"case",
+							lv_case_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		(
+			(
+				otherlv_4=':'
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0());
+						}
+						lv_then_5_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXCasePartRule());
+							}
+							set(
+								$current,
+								"then",
+								lv_then_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+			    |
+			(
+				(
+					lv_fallThrough_6_0=','
+					{
+						newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXCasePartRule());
+						}
+						setWithLastConsumed($current, "fallThrough", true, ",");
+					}
+				)
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXForLoopExpressionRule()); }
+	iv_ruleXForLoopExpression=ruleXForLoopExpression
+	{ $current=$iv_ruleXForLoopExpression.current; }
+	EOF;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+				)
+				'for'
+				'('
+				(
+					(
+						ruleJvmFormalParameter
+					)
+				)
+				':'
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElement(
+							grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
+							$current);
+					}
+				)
+				otherlv_1='for'
+				{
+					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
+				}
+				otherlv_2='('
+				{
+					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0());
+						}
+						lv_declaredParam_3_0=ruleJvmFormalParameter
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+							}
+							set(
+								$current,
+								"declaredParam",
+								lv_declaredParam_3_0,
+								"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				otherlv_4=':'
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0());
+				}
+				lv_forExpression_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+					}
+					set(
+						$current,
+						"forExpression",
+						lv_forExpression_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_6=')'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0());
+				}
+				lv_eachExpression_7_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+					}
+					set(
+						$current,
+						"eachExpression",
+						lv_eachExpression_7_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); }
+	iv_ruleXBasicForLoopExpression=ruleXBasicForLoopExpression
+	{ $current=$iv_ruleXBasicForLoopExpression.current; }
+	EOF;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='for'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
+		}
+		otherlv_2='('
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0());
+					}
+					lv_initExpressions_3_0=ruleXExpressionOrVarDeclaration
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+						}
+						add(
+							$current,
+							"initExpressions",
+							lv_initExpressions_3_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_4=','
+				{
+					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0());
+						}
+						lv_initExpressions_5_0=ruleXExpressionOrVarDeclaration
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+							}
+							add(
+								$current,
+								"initExpressions",
+								lv_initExpressions_5_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+		)?
+		otherlv_6=';'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0());
+				}
+				lv_expression_7_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_7_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		otherlv_8=';'
+		{
+			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0());
+					}
+					lv_updateExpressions_9_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+						}
+						add(
+							$current,
+							"updateExpressions",
+							lv_updateExpressions_9_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_10=','
+				{
+					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0());
+						}
+						lv_updateExpressions_11_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+							}
+							add(
+								$current,
+								"updateExpressions",
+								lv_updateExpressions_11_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+		)?
+		otherlv_12=')'
+		{
+			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0());
+				}
+				lv_eachExpression_13_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+					}
+					set(
+						$current,
+						"eachExpression",
+						lv_eachExpression_13_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXWhileExpressionRule()); }
+	iv_ruleXWhileExpression=ruleXWhileExpression
+	{ $current=$iv_ruleXWhileExpression.current; }
+	EOF;
+
+// Rule XWhileExpression
+ruleXWhileExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='while'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
+		}
+		otherlv_2='('
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0());
+				}
+				lv_predicate_3_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+					}
+					set(
+						$current,
+						"predicate",
+						lv_predicate_3_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_4=')'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0());
+				}
+				lv_body_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+					}
+					set(
+						$current,
+						"body",
+						lv_body_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); }
+	iv_ruleXDoWhileExpression=ruleXDoWhileExpression
+	{ $current=$iv_ruleXDoWhileExpression.current; }
+	EOF;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='do'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0());
+				}
+				lv_body_2_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+					}
+					set(
+						$current,
+						"body",
+						lv_body_2_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_3='while'
+		{
+			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
+		}
+		otherlv_4='('
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0());
+				}
+				lv_predicate_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+					}
+					set(
+						$current,
+						"predicate",
+						lv_predicate_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_6=')'
+		{
+			newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
+		}
+	)
+;
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXBlockExpressionRule()); }
+	iv_ruleXBlockExpression=ruleXBlockExpression
+	{ $current=$iv_ruleXBlockExpression.current; }
+	EOF;
+
+// Rule XBlockExpression
+ruleXBlockExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='{'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
+		}
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0());
+					}
+					lv_expressions_2_0=ruleXExpressionOrVarDeclaration
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
+						}
+						add(
+							$current,
+							"expressions",
+							lv_expressions_2_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_3=';'
+				{
+					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+				}
+			)?
+		)*
+		otherlv_4='}'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
+		}
+	)
+;
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	iv_ruleXExpressionOrVarDeclaration=ruleXExpressionOrVarDeclaration
+	{ $current=$iv_ruleXExpressionOrVarDeclaration.current; }
+	EOF;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0());
+		}
+		this_XVariableDeclaration_0=ruleXVariableDeclaration
+		{
+			$current = $this_XVariableDeclaration_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1());
+		}
+		this_XExpression_1=ruleXExpression
+		{
+			$current = $this_XExpression_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
+;
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXVariableDeclarationRule()); }
+	iv_ruleXVariableDeclaration=ruleXVariableDeclaration
+	{ $current=$iv_ruleXVariableDeclaration.current; }
+	EOF;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				(
+					lv_writeable_1_0='var'
+					{
+						newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXVariableDeclarationRule());
+						}
+						setWithLastConsumed($current, "writeable", true, "var");
+					}
+				)
+			)
+			    |
+			otherlv_2='val'
+			{
+				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
+			}
+		)
+		(
+			(
+				((
+					(
+						(
+							ruleJvmTypeReference
+						)
+					)
+					(
+						(
+							ruleValidID
+						)
+					)
+				)
+				)=>
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0());
+							}
+							lv_type_3_0=ruleJvmTypeReference
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+								}
+								set(
+									$current,
+									"type",
+									lv_type_3_0,
+									"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0());
+							}
+							lv_name_4_0=ruleValidID
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+								}
+								set(
+									$current,
+									"name",
+									lv_name_4_0,
+									"org.eclipse.xtext.xbase.Xtype.ValidID");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)
+			)
+			    |
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0());
+					}
+					lv_name_5_0=ruleValidID
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+						}
+						set(
+							$current,
+							"name",
+							lv_name_5_0,
+							"org.eclipse.xtext.xbase.Xtype.ValidID");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)
+		(
+			otherlv_6='='
+			{
+				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0());
+					}
+					lv_right_7_0=ruleXExpression
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+						}
+						set(
+							$current,
+							"right",
+							lv_right_7_0,
+							"org.eclipse.xtext.xbase.Xbase.XExpression");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+	)
+;
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getJvmFormalParameterRule()); }
+	iv_ruleJvmFormalParameter=ruleJvmFormalParameter
+	{ $current=$iv_ruleJvmFormalParameter.current; }
+	EOF;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0());
+				}
+				lv_parameterType_0_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+					}
+					set(
+						$current,
+						"parameterType",
+						lv_parameterType_0_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0());
+				}
+				lv_name_1_0=ruleValidID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.xtext.xbase.Xtype.ValidID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); }
+	iv_ruleFullJvmFormalParameter=ruleFullJvmFormalParameter
+	{ $current=$iv_ruleFullJvmFormalParameter.current; }
+	EOF;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0());
+				}
+				lv_parameterType_0_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+					}
+					set(
+						$current,
+						"parameterType",
+						lv_parameterType_0_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0());
+				}
+				lv_name_1_0=ruleValidID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.xtext.xbase.Xtype.ValidID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXFeatureCallRule()); }
+	iv_ruleXFeatureCall=ruleXFeatureCall
+	{ $current=$iv_ruleXFeatureCall.current; }
+	EOF;
+
+// Rule XFeatureCall
+ruleXFeatureCall returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
+					$current);
+			}
+		)
+		(
+			otherlv_1='<'
+			{
+				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+					}
+					lv_typeArguments_2_0=ruleJvmArgumentTypeReference
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+						}
+						add(
+							$current,
+							"typeArguments",
+							lv_typeArguments_2_0,
+							"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_3=','
+				{
+					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+						}
+						lv_typeArguments_4_0=ruleJvmArgumentTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+							}
+							add(
+								$current,
+								"typeArguments",
+								lv_typeArguments_4_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+			otherlv_5='>'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
+			}
+		)?
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXFeatureCallRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0());
+				}
+				ruleIdOrSuper
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				((
+					'('
+				)
+				)=>
+				(
+					lv_explicitOperationCall_7_0='('
+					{
+						newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXFeatureCallRule());
+						}
+						setWithLastConsumed($current, "explicitOperationCall", true, "(");
+					}
+				)
+			)
+			(
+				(
+					((
+						(
+						)
+						(
+							(
+								(
+									ruleJvmFormalParameter
+								)
+							)
+							(
+								','
+								(
+									(
+										ruleJvmFormalParameter
+									)
+								)
+							)*
+						)?
+						(
+							(
+								'|'
+							)
+						)
+					)
+					)=>
+					(
+						{
+							newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0());
+						}
+						lv_featureCallArguments_8_0=ruleXShortClosure
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+							}
+							add(
+								$current,
+								"featureCallArguments",
+								lv_featureCallArguments_8_0,
+								"org.eclipse.xtext.xbase.Xbase.XShortClosure");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				    |
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0());
+							}
+							lv_featureCallArguments_9_0=ruleXExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+								}
+								add(
+									$current,
+									"featureCallArguments",
+									lv_featureCallArguments_9_0,
+									"org.eclipse.xtext.xbase.Xbase.XExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_10=','
+						{
+							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0());
+								}
+								lv_featureCallArguments_11_0=ruleXExpression
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+									}
+									add(
+										$current,
+										"featureCallArguments",
+										lv_featureCallArguments_11_0,
+										"org.eclipse.xtext.xbase.Xbase.XExpression");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)
+			)?
+			otherlv_12=')'
+			{
+				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
+			}
+		)?
+		(
+			((
+				(
+				)
+				'['
+			)
+			)=>
+			(
+				{
+					newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0());
+				}
+				lv_featureCallArguments_13_0=ruleXClosure
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+					}
+					add(
+						$current,
+						"featureCallArguments",
+						lv_featureCallArguments_13_0,
+						"org.eclipse.xtext.xbase.Xbase.XClosure");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+	)
+;
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getFeatureCallIDRule()); }
+	iv_ruleFeatureCallID=ruleFeatureCallID
+	{ $current=$iv_ruleFeatureCallID.current.getText(); }
+	EOF;
+
+// Rule FeatureCallID
+ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0());
+		}
+		this_ValidID_0=ruleValidID
+		{
+			$current.merge(this_ValidID_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		kw='extends'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1());
+		}
+		    |
+		kw='static'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2());
+		}
+		    |
+		kw='import'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3());
+		}
+		    |
+		kw='extension'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4());
+		}
+	)
+;
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getIdOrSuperRule()); }
+	iv_ruleIdOrSuper=ruleIdOrSuper
+	{ $current=$iv_ruleIdOrSuper.current.getText(); }
+	EOF;
+
+// Rule IdOrSuper
+ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0());
+		}
+		this_FeatureCallID_0=ruleFeatureCallID
+		{
+			$current.merge(this_FeatureCallID_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		kw='super'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1());
+		}
+	)
+;
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXConstructorCallRule()); }
+	iv_ruleXConstructorCall=ruleXConstructorCall
+	{ $current=$iv_ruleXConstructorCall.current; }
+	EOF;
+
+// Rule XConstructorCall
+ruleXConstructorCall returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='new'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXConstructorCallRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0());
+				}
+				ruleQualifiedName
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				('<')=>
+				otherlv_3='<'
+				{
+					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
+				}
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0());
+					}
+					lv_typeArguments_4_0=ruleJvmArgumentTypeReference
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+						}
+						add(
+							$current,
+							"typeArguments",
+							lv_typeArguments_4_0,
+							"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_5=','
+				{
+					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0());
+						}
+						lv_typeArguments_6_0=ruleJvmArgumentTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+							}
+							add(
+								$current,
+								"typeArguments",
+								lv_typeArguments_6_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+			otherlv_7='>'
+			{
+				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
+			}
+		)?
+		(
+			(
+				((
+					'('
+				)
+				)=>
+				(
+					lv_explicitConstructorCall_8_0='('
+					{
+						newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXConstructorCallRule());
+						}
+						setWithLastConsumed($current, "explicitConstructorCall", true, "(");
+					}
+				)
+			)
+			(
+				(
+					((
+						(
+						)
+						(
+							(
+								(
+									ruleJvmFormalParameter
+								)
+							)
+							(
+								','
+								(
+									(
+										ruleJvmFormalParameter
+									)
+								)
+							)*
+						)?
+						(
+							(
+								'|'
+							)
+						)
+					)
+					)=>
+					(
+						{
+							newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0());
+						}
+						lv_arguments_9_0=ruleXShortClosure
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+							}
+							add(
+								$current,
+								"arguments",
+								lv_arguments_9_0,
+								"org.eclipse.xtext.xbase.Xbase.XShortClosure");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				    |
+				(
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0());
+							}
+							lv_arguments_10_0=ruleXExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+								}
+								add(
+									$current,
+									"arguments",
+									lv_arguments_10_0,
+									"org.eclipse.xtext.xbase.Xbase.XExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_11=','
+						{
+							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0());
+								}
+								lv_arguments_12_0=ruleXExpression
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+									}
+									add(
+										$current,
+										"arguments",
+										lv_arguments_12_0,
+										"org.eclipse.xtext.xbase.Xbase.XExpression");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+				)
+			)?
+			otherlv_13=')'
+			{
+				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
+			}
+		)?
+		(
+			((
+				(
+				)
+				'['
+			)
+			)=>
+			(
+				{
+					newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0());
+				}
+				lv_arguments_14_0=ruleXClosure
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+					}
+					add(
+						$current,
+						"arguments",
+						lv_arguments_14_0,
+						"org.eclipse.xtext.xbase.Xbase.XClosure");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+	)
+;
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXBooleanLiteralRule()); }
+	iv_ruleXBooleanLiteral=ruleXBooleanLiteral
+	{ $current=$iv_ruleXBooleanLiteral.current; }
+	EOF;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
+					$current);
+			}
+		)
+		(
+			otherlv_1='false'
+			{
+				newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
+			}
+			    |
+			(
+				(
+					lv_isTrue_2_0='true'
+					{
+						newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getXBooleanLiteralRule());
+						}
+						setWithLastConsumed($current, "isTrue", true, "true");
+					}
+				)
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXNullLiteralRule()); }
+	iv_ruleXNullLiteral=ruleXNullLiteral
+	{ $current=$iv_ruleXNullLiteral.current; }
+	EOF;
+
+// Rule XNullLiteral
+ruleXNullLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='null'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
+		}
+	)
+;
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXNumberLiteralRule()); }
+	iv_ruleXNumberLiteral=ruleXNumberLiteral
+	{ $current=$iv_ruleXNumberLiteral.current; }
+	EOF;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0());
+				}
+				lv_value_1_0=ruleNumber
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
+					}
+					set(
+						$current,
+						"value",
+						lv_value_1_0,
+						"org.eclipse.xtext.xbase.Xbase.Number");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXStringLiteralRule()); }
+	iv_ruleXStringLiteral=ruleXStringLiteral
+	{ $current=$iv_ruleXStringLiteral.current; }
+	EOF;
+
+// Rule XStringLiteral
+ruleXStringLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				lv_value_1_0=RULE_STRING
+				{
+					newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXStringLiteralRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"value",
+						lv_value_1_0,
+						"org.eclipse.xtext.xbase.Xtype.STRING");
+				}
+			)
+		)
+	)
+;
 
 // Entry rule entryRuleXTypeLiteral
-entryRuleXTypeLiteral returns [EObject current=null] 
-	:
+entryRuleXTypeLiteral returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXTypeLiteralRule()); }
-	 iv_ruleXTypeLiteral=ruleXTypeLiteral 
-	 { $current=$iv_ruleXTypeLiteral.current; } 
-	 EOF 
-;
+	iv_ruleXTypeLiteral=ruleXTypeLiteral
+	{ $current=$iv_ruleXTypeLiteral.current; }
+	EOF;
 
 // Rule XTypeLiteral
-ruleXTypeLiteral returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
-            $current);
-    }
-)	otherlv_1='typeof' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
-    }
-(
-(
+ruleXTypeLiteral returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='typeof'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXTypeLiteralRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
-	    }
-		lv_arrayDimensions_4_0=ruleArrayBrackets		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
-	        }
-       		add(
-       			$current, 
-       			"arrayDimensions",
-        		lv_arrayDimensions_4_0, 
-        		"ArrayBrackets");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_5=')' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
-    }
-)
+			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+		}
+		otherlv_2='('
+		{
+			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getXTypeLiteralRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0());
+				}
+				ruleQualifiedName
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
+				}
+				lv_arrayDimensions_4_0=ruleArrayBrackets
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
+					}
+					add(
+						$current,
+						"arrayDimensions",
+						lv_arrayDimensions_4_0,
+						"org.eclipse.xtext.xbase.Xtype.ArrayBrackets");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_5=')'
+		{
+			newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXThrowExpression
-entryRuleXThrowExpression returns [EObject current=null] 
-	:
+entryRuleXThrowExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXThrowExpressionRule()); }
-	 iv_ruleXThrowExpression=ruleXThrowExpression 
-	 { $current=$iv_ruleXThrowExpression.current; } 
-	 EOF 
-;
+	iv_ruleXThrowExpression=ruleXThrowExpression
+	{ $current=$iv_ruleXThrowExpression.current; }
+	EOF;
 
 // Rule XThrowExpression
-ruleXThrowExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='throw' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
-	    }
-		lv_expression_2_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_2_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXThrowExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='throw'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+				}
+				lv_expression_2_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_2_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXReturnExpression
-entryRuleXReturnExpression returns [EObject current=null] 
-	:
+entryRuleXReturnExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXReturnExpressionRule()); }
-	 iv_ruleXReturnExpression=ruleXReturnExpression 
-	 { $current=$iv_ruleXReturnExpression.current; } 
-	 EOF 
-;
+	iv_ruleXReturnExpression=ruleXReturnExpression
+	{ $current=$iv_ruleXReturnExpression.current; }
+	EOF;
 
 // Rule XReturnExpression
-ruleXReturnExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='return' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
-    }
-((	'extends' 
- | 	'static' 
- | 	'import' 
- | 	'extension' 
- | 	'!' 
- | 	'-' 
- | 	'+' 
- | 	'new' 
- | 	'{' 
- | 	'switch' 
- | 	'synchronized' 
- | 	'<' 
- | 	'super' 
- | 	'#' 
- | 	'[' 
- | 	'false' 
- | 	'true' 
- | 	'null' 
- | 	'typeof' 
- | 	'if' 
- | 	'for' 
- | 	'while' 
- | 	'do' 
- | 	'throw' 
- | 	'return' 
- | 	'try' 
- | 	'(' 
- | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
-	    }
-		lv_expression_2_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_2_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?)
+ruleXReturnExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='return'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+		}
+		(
+			('extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING)=>
+			(
+				{
+					newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+				}
+				lv_expression_2_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_2_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXTryCatchFinallyExpression
-entryRuleXTryCatchFinallyExpression returns [EObject current=null] 
-	:
+entryRuleXTryCatchFinallyExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); }
-	 iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression 
-	 { $current=$iv_ruleXTryCatchFinallyExpression.current; } 
-	 EOF 
-;
+	iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression
+	{ $current=$iv_ruleXTryCatchFinallyExpression.current; }
+	EOF;
 
 // Rule XTryCatchFinallyExpression
-ruleXTryCatchFinallyExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
-            $current);
-    }
-)	otherlv_1='try' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
-	    }
-		lv_expression_2_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_2_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((((	'catch' 
-)=>
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
-	    }
-		lv_catchClauses_3_0=ruleXCatchClause		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
-	        }
-       		add(
-       			$current, 
-       			"catchClauses",
-        		lv_catchClauses_3_0, 
-        		"XCatchClause");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)+(((	'finally' 
-)=>	otherlv_4='finally' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
-	    }
-		lv_finallyExpression_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"finallyExpression",
-        		lv_finallyExpression_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
-    |(	otherlv_6='finally' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
-	    }
-		lv_finallyExpression_7_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"finallyExpression",
-        		lv_finallyExpression_7_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))))
+ruleXTryCatchFinallyExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='try'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+				}
+				lv_expression_2_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_2_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				(
+					('catch')=>
+					(
+						{
+							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0());
+						}
+						lv_catchClauses_3_0=ruleXCatchClause
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+							}
+							add(
+								$current,
+								"catchClauses",
+								lv_catchClauses_3_0,
+								"org.eclipse.xtext.xbase.Xbase.XCatchClause");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)+
+				(
+					(
+						('finally')=>
+						otherlv_4='finally'
+						{
+							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+						}
+					)
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0());
+							}
+							lv_finallyExpression_5_0=ruleXExpression
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+								}
+								set(
+									$current,
+									"finallyExpression",
+									lv_finallyExpression_5_0,
+									"org.eclipse.xtext.xbase.Xbase.XExpression");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)?
+			)
+			    |
+			(
+				otherlv_6='finally'
+				{
+					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0());
+						}
+						lv_finallyExpression_7_0=ruleXExpression
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+							}
+							set(
+								$current,
+								"finallyExpression",
+								lv_finallyExpression_7_0,
+								"org.eclipse.xtext.xbase.Xbase.XExpression");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXSynchronizedExpression
-entryRuleXSynchronizedExpression returns [EObject current=null] 
-	:
+entryRuleXSynchronizedExpression returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); }
-	 iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression 
-	 { $current=$iv_ruleXSynchronizedExpression.current; } 
-	 EOF 
-;
+	iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression
+	{ $current=$iv_ruleXSynchronizedExpression.current; }
+	EOF;
 
 // Rule XSynchronizedExpression
-ruleXSynchronizedExpression returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((((
-)	'synchronized' 
-	'(' 
-))=>((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
-            $current);
-    }
-)	otherlv_1='synchronized' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
-    }
-	otherlv_2='(' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
-    }
-))(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
-	    }
-		lv_param_3_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"param",
-        		lv_param_3_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=')' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
-	    }
-		lv_expression_5_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_5_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXSynchronizedExpression returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			((
+				(
+				)
+				'synchronized'
+				'('
+			)
+			)=>
+			(
+				(
+					{
+						$current = forceCreateModelElement(
+							grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+							$current);
+					}
+				)
+				otherlv_1='synchronized'
+				{
+					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+				}
+				otherlv_2='('
+				{
+					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0());
+				}
+				lv_param_3_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+					}
+					set(
+						$current,
+						"param",
+						lv_param_3_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_4=')'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0());
+				}
+				lv_expression_5_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_5_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleXCatchClause
-entryRuleXCatchClause returns [EObject current=null] 
-	:
+entryRuleXCatchClause returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXCatchClauseRule()); }
-	 iv_ruleXCatchClause=ruleXCatchClause 
-	 { $current=$iv_ruleXCatchClause.current; } 
-	 EOF 
-;
+	iv_ruleXCatchClause=ruleXCatchClause
+	{ $current=$iv_ruleXCatchClause.current; }
+	EOF;
 
 // Rule XCatchClause
-ruleXCatchClause returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(((	'catch' 
-)=>	otherlv_0='catch' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
-    }
-)	otherlv_1='(' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
-	    }
-		lv_declaredParam_2_0=ruleFullJvmFormalParameter		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
-	        }
-       		set(
-       			$current, 
-       			"declaredParam",
-        		lv_declaredParam_2_0, 
-        		"FullJvmFormalParameter");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_3=')' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
-	    }
-		lv_expression_4_0=ruleXExpression		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
-	        }
-       		set(
-       			$current, 
-       			"expression",
-        		lv_expression_4_0, 
-        		"XExpression");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXCatchClause returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			('catch')=>
+			otherlv_0='catch'
+			{
+				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+			}
+		)
+		otherlv_1='('
+		{
+			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0());
+				}
+				lv_declaredParam_2_0=ruleFullJvmFormalParameter
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+					}
+					set(
+						$current,
+						"declaredParam",
+						lv_declaredParam_2_0,
+						"org.eclipse.xtext.xbase.Xbase.FullJvmFormalParameter");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_3=')'
+		{
+			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0());
+				}
+				lv_expression_4_0=ruleXExpression
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+					}
+					set(
+						$current,
+						"expression",
+						lv_expression_4_0,
+						"org.eclipse.xtext.xbase.Xbase.XExpression");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getQualifiedNameRule()); }
+	iv_ruleQualifiedName=ruleQualifiedName
+	{ $current=$iv_ruleQualifiedName.current.getText(); }
+	EOF;
 
-
-
+// Rule QualifiedName
+ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
+		}
+		this_ValidID_0=ruleValidID
+		{
+			$current.merge(this_ValidID_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		(
+			(
+				('.')=>
+				kw='.'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0());
+				}
+			)
+			{
+				newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1());
+			}
+			this_ValidID_2=ruleValidID
+			{
+				$current.merge(this_ValidID_2);
+			}
+			{
+				afterParserOrEnumRuleCall();
+			}
+		)*
+	)
+;
 
 // Entry rule entryRuleNumber
-entryRuleNumber returns [String current=null] 
-	@init { 
-		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
-	}
-	:
-	{ newCompositeNode(grammarAccess.getNumberRule()); } 
-	 iv_ruleNumber=ruleNumber 
-	 { $current=$iv_ruleNumber.current.getText(); }  
-	 EOF 
-;
+entryRuleNumber returns [String current=null]@init {
+	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+}:
+	{ newCompositeNode(grammarAccess.getNumberRule()); }
+	iv_ruleNumber=ruleNumber
+	{ $current=$iv_ruleNumber.current.getText(); }
+	EOF;
 finally {
 	myHiddenTokenState.restore();
 }
 
 // Rule Number
-ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
-    }
-    @after { leaveRule(); }:
-(    this_HEX_0=RULE_HEX    {
-		$current.merge(this_HEX_0);
-    }
-
-    { 
-    newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
-    }
-
-    |((    this_INT_1=RULE_INT    {
-		$current.merge(this_INT_1);
-    }
-
-    { 
-    newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
-    }
-
-    |    this_DECIMAL_2=RULE_DECIMAL    {
-		$current.merge(this_DECIMAL_2);
-    }
-
-    { 
-    newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
-    }
-)(
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
-    }
-(    this_INT_4=RULE_INT    {
-		$current.merge(this_INT_4);
-    }
-
-    { 
-    newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
-    }
-
-    |    this_DECIMAL_5=RULE_DECIMAL    {
-		$current.merge(this_DECIMAL_5);
-    }
-
-    { 
-    newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
-    }
-))?))
-    ;
+ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+}
+@after {
+	leaveRule();
+}:
+	(
+		this_HEX_0=RULE_HEX
+		{
+			$current.merge(this_HEX_0);
+		}
+		{
+			newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0());
+		}
+		    |
+		(
+			(
+				this_INT_1=RULE_INT
+				{
+					$current.merge(this_INT_1);
+				}
+				{
+					newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0());
+				}
+				    |
+				this_DECIMAL_2=RULE_DECIMAL
+				{
+					$current.merge(this_DECIMAL_2);
+				}
+				{
+					newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1());
+				}
+			)
+			(
+				kw='.'
+				{
+					$current.merge(kw);
+					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
+				}
+				(
+					this_INT_4=RULE_INT
+					{
+						$current.merge(this_INT_4);
+					}
+					{
+						newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0());
+					}
+					    |
+					this_DECIMAL_5=RULE_DECIMAL
+					{
+						$current.merge(this_DECIMAL_5);
+					}
+					{
+						newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1());
+					}
+				)
+			)?
+		)
+	)
+;
 finally {
 	myHiddenTokenState.restore();
 }
 
-
-
-
-
-
-
 // Entry rule entryRuleJvmTypeReference
-entryRuleJvmTypeReference returns [EObject current=null] 
-	:
+entryRuleJvmTypeReference returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); }
-	 iv_ruleJvmTypeReference=ruleJvmTypeReference 
-	 { $current=$iv_ruleJvmTypeReference.current; } 
-	 EOF 
-;
+	iv_ruleJvmTypeReference=ruleJvmTypeReference
+	{ $current=$iv_ruleJvmTypeReference.current; }
+	EOF;
 
 // Rule JvmTypeReference
-ruleJvmTypeReference returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    { 
-        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
-    }
-    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference
-    { 
-        $current = $this_JvmParameterizedTypeReference_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-((((
-)	ruleArrayBrackets))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
-            $current);
-    }
-)
-    { 
-        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
-    }
-ruleArrayBrackets
-    { 
-        afterParserOrEnumRuleCall();
-    }
-))*)
-    |
-    { 
-        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
-    }
-    this_XFunctionTypeRef_3=ruleXFunctionTypeRef
-    { 
-        $current = $this_XFunctionTypeRef_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleJvmTypeReference returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
+			}
+			this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference
+			{
+				$current = $this_JvmParameterizedTypeReference_0.current;
+				afterParserOrEnumRuleCall();
+			}
+			(
+				((
+					(
+					)
+					ruleArrayBrackets
+				)
+				)=>
+				(
+					(
+						{
+							$current = forceCreateModelElementAndSet(
+								grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
+								$current);
+						}
+					)
+					{
+						newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1());
+					}
+					ruleArrayBrackets
+					{
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+		)
+		    |
+		{
+			newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1());
+		}
+		this_XFunctionTypeRef_3=ruleXFunctionTypeRef
+		{
+			$current = $this_XFunctionTypeRef_3.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleArrayBrackets
-entryRuleArrayBrackets returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getArrayBracketsRule()); } 
-	 iv_ruleArrayBrackets=ruleArrayBrackets 
-	 { $current=$iv_ruleArrayBrackets.current.getText(); }  
-	 EOF 
-;
+entryRuleArrayBrackets returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getArrayBracketsRule()); }
+	iv_ruleArrayBrackets=ruleArrayBrackets
+	{ $current=$iv_ruleArrayBrackets.current.getText(); }
+	EOF;
 
 // Rule ArrayBrackets
-ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-	kw='[' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
-    }
-
-	kw=']' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
-    }
-)
-    ;
-
-
-
-
+ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		kw='['
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
+		}
+		kw=']'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1());
+		}
+	)
+;
 
 // Entry rule entryRuleXFunctionTypeRef
-entryRuleXFunctionTypeRef returns [EObject current=null] 
-	:
+entryRuleXFunctionTypeRef returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); }
-	 iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef 
-	 { $current=$iv_ruleXFunctionTypeRef.current; } 
-	 EOF 
-;
+	iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef
+	{ $current=$iv_ruleXFunctionTypeRef.current; }
+	EOF;
 
 // Rule XFunctionTypeRef
-ruleXFunctionTypeRef returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((	otherlv_0='(' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
-    }
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
-	    }
-		lv_paramTypes_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
-	        }
-       		add(
-       			$current, 
-       			"paramTypes",
-        		lv_paramTypes_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_2=',' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
-	    }
-		lv_paramTypes_3_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
-	        }
-       		add(
-       			$current, 
-       			"paramTypes",
-        		lv_paramTypes_3_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*)?	otherlv_4=')' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
-    }
-)?	otherlv_5='=>' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
-	    }
-		lv_returnType_6_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
-	        }
-       		set(
-       			$current, 
-       			"returnType",
-        		lv_returnType_6_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleXFunctionTypeRef returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			otherlv_0='('
+			{
+				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+			}
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
+						}
+						lv_paramTypes_1_0=ruleJvmTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+							}
+							add(
+								$current,
+								"paramTypes",
+								lv_paramTypes_1_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					otherlv_2=','
+					{
+						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+					}
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
+							}
+							lv_paramTypes_3_0=ruleJvmTypeReference
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+								}
+								add(
+									$current,
+									"paramTypes",
+									lv_paramTypes_3_0,
+									"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+				)*
+			)?
+			otherlv_4=')'
+			{
+				newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+			}
+		)?
+		otherlv_5='=>'
+		{
+			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0());
+				}
+				lv_returnType_6_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+					}
+					set(
+						$current,
+						"returnType",
+						lv_returnType_6_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmParameterizedTypeReference
-entryRuleJvmParameterizedTypeReference returns [EObject current=null] 
-	:
+entryRuleJvmParameterizedTypeReference returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
-	 iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference 
-	 { $current=$iv_ruleJvmParameterizedTypeReference.current; } 
-	 EOF 
-;
+	iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference
+	{ $current=$iv_ruleJvmParameterizedTypeReference.current; }
+	EOF;
 
 // Rule JvmParameterizedTypeReference
-ruleJvmParameterizedTypeReference returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'<' 
-)=>	otherlv_1='<' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
-	    }
-		lv_arguments_2_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_2_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3=',' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
-	    }
-		lv_arguments_4_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_4_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_5='>' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
-    }
-(((((
-)	'.' 
-))=>((
-    {
-        $current = forceCreateModelElementAndSet(
-            grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
-            $current);
-    }
-)	otherlv_7='.' 
-    {
-    	newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
-    }
-))(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
-	    }
-		ruleValidID		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(((	'<' 
-)=>	otherlv_9='<' 
-    {
-    	newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
-	    }
-		lv_arguments_10_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_10_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_11=',' 
-    {
-    	newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
-	    }
-		lv_arguments_12_0=ruleJvmArgumentTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"arguments",
-        		lv_arguments_12_0, 
-        		"JvmArgumentTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))*	otherlv_13='>' 
-    {
-    	newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
-    }
-)?)*)?)
+ruleJvmParameterizedTypeReference returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0());
+				}
+				ruleQualifiedName
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				('<')=>
+				otherlv_1='<'
+				{
+					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+				}
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+					}
+					lv_arguments_2_0=ruleJvmArgumentTypeReference
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+						}
+						add(
+							$current,
+							"arguments",
+							lv_arguments_2_0,
+							"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			(
+				otherlv_3=','
+				{
+					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+				}
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+						}
+						lv_arguments_4_0=ruleJvmArgumentTypeReference
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+							}
+							add(
+								$current,
+								"arguments",
+								lv_arguments_4_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+			)*
+			otherlv_5='>'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+			}
+			(
+				(
+					((
+						(
+						)
+						'.'
+					)
+					)=>
+					(
+						(
+							{
+								$current = forceCreateModelElementAndSet(
+									grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+									$current);
+							}
+						)
+						otherlv_7='.'
+						{
+							newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+						}
+					)
+				)
+				(
+					(
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+							}
+						}
+						{
+							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0());
+						}
+						ruleValidID
+						{
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						('<')=>
+						otherlv_9='<'
+						{
+							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+						}
+					)
+					(
+						(
+							{
+								newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
+							}
+							lv_arguments_10_0=ruleJvmArgumentTypeReference
+							{
+								if ($current==null) {
+									$current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+								}
+								add(
+									$current,
+									"arguments",
+									lv_arguments_10_0,
+									"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+								afterParserOrEnumRuleCall();
+							}
+						)
+					)
+					(
+						otherlv_11=','
+						{
+							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+						}
+						(
+							(
+								{
+									newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
+								}
+								lv_arguments_12_0=ruleJvmArgumentTypeReference
+								{
+									if ($current==null) {
+										$current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+									}
+									add(
+										$current,
+										"arguments",
+										lv_arguments_12_0,
+										"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+									afterParserOrEnumRuleCall();
+								}
+							)
+						)
+					)*
+					otherlv_13='>'
+					{
+						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+					}
+				)?
+			)*
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmArgumentTypeReference
-entryRuleJvmArgumentTypeReference returns [EObject current=null] 
-	:
+entryRuleJvmArgumentTypeReference returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); }
-	 iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference 
-	 { $current=$iv_ruleJvmArgumentTypeReference.current; } 
-	 EOF 
-;
+	iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference
+	{ $current=$iv_ruleJvmArgumentTypeReference.current; }
+	EOF;
 
 // Rule JvmArgumentTypeReference
-ruleJvmArgumentTypeReference returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
-    }
-    this_JvmTypeReference_0=ruleJvmTypeReference
-    { 
-        $current = $this_JvmTypeReference_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
-    }
-    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference
-    { 
-        $current = $this_JvmWildcardTypeReference_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleJvmArgumentTypeReference returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0());
+		}
+		this_JvmTypeReference_0=ruleJvmTypeReference
+		{
+			$current = $this_JvmTypeReference_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1());
+		}
+		this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference
+		{
+			$current = $this_JvmWildcardTypeReference_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmWildcardTypeReference
-entryRuleJvmWildcardTypeReference returns [EObject current=null] 
-	:
+entryRuleJvmWildcardTypeReference returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); }
-	 iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference 
-	 { $current=$iv_ruleJvmWildcardTypeReference.current; } 
-	 EOF 
-;
+	iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference
+	{ $current=$iv_ruleJvmWildcardTypeReference.current; }
+	EOF;
 
 // Rule JvmWildcardTypeReference
-ruleJvmWildcardTypeReference returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
-            $current);
-    }
-)	otherlv_1='?' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
-    }
-(((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
-	    }
-		lv_constraints_2_0=ruleJvmUpperBound		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"constraints",
-        		lv_constraints_2_0, 
-        		"JvmUpperBound");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
-	    }
-		lv_constraints_3_0=ruleJvmUpperBoundAnded		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"constraints",
-        		lv_constraints_3_0, 
-        		"JvmUpperBoundAnded");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*)
-    |((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
-	    }
-		lv_constraints_4_0=ruleJvmLowerBound		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"constraints",
-        		lv_constraints_4_0, 
-        		"JvmLowerBound");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
-	    }
-		lv_constraints_5_0=ruleJvmLowerBoundAnded		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
-	        }
-       		add(
-       			$current, 
-       			"constraints",
-        		lv_constraints_5_0, 
-        		"JvmLowerBoundAnded");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*))?)
+ruleJvmWildcardTypeReference returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='?'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+		}
+		(
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
+						}
+						lv_constraints_2_0=ruleJvmUpperBound
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+							}
+							add(
+								$current,
+								"constraints",
+								lv_constraints_2_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmUpperBound");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
+						}
+						lv_constraints_3_0=ruleJvmUpperBoundAnded
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+							}
+							add(
+								$current,
+								"constraints",
+								lv_constraints_3_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmUpperBoundAnded");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)*
+			)
+			    |
+			(
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
+						}
+						lv_constraints_4_0=ruleJvmLowerBound
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+							}
+							add(
+								$current,
+								"constraints",
+								lv_constraints_4_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmLowerBound");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)
+				(
+					(
+						{
+							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
+						}
+						lv_constraints_5_0=ruleJvmLowerBoundAnded
+						{
+							if ($current==null) {
+								$current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+							}
+							add(
+								$current,
+								"constraints",
+								lv_constraints_5_0,
+								"org.eclipse.xtext.xbase.Xtype.JvmLowerBoundAnded");
+							afterParserOrEnumRuleCall();
+						}
+					)
+				)*
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmUpperBound
-entryRuleJvmUpperBound returns [EObject current=null] 
-	:
+entryRuleJvmUpperBound returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmUpperBoundRule()); }
-	 iv_ruleJvmUpperBound=ruleJvmUpperBound 
-	 { $current=$iv_ruleJvmUpperBound.current; } 
-	 EOF 
-;
+	iv_ruleJvmUpperBound=ruleJvmUpperBound
+	{ $current=$iv_ruleJvmUpperBound.current; }
+	EOF;
 
 // Rule JvmUpperBound
-ruleJvmUpperBound returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='extends' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeReference_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
-	        }
-       		set(
-       			$current, 
-       			"typeReference",
-        		lv_typeReference_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleJvmUpperBound returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='extends'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeReference_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
+					}
+					set(
+						$current,
+						"typeReference",
+						lv_typeReference_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmUpperBoundAnded
-entryRuleJvmUpperBoundAnded returns [EObject current=null] 
-	:
+entryRuleJvmUpperBoundAnded returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); }
-	 iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded 
-	 { $current=$iv_ruleJvmUpperBoundAnded.current; } 
-	 EOF 
-;
+	iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded
+	{ $current=$iv_ruleJvmUpperBoundAnded.current; }
+	EOF;
 
 // Rule JvmUpperBoundAnded
-ruleJvmUpperBoundAnded returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='&' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeReference_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
-	        }
-       		set(
-       			$current, 
-       			"typeReference",
-        		lv_typeReference_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleJvmUpperBoundAnded returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='&'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeReference_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
+					}
+					set(
+						$current,
+						"typeReference",
+						lv_typeReference_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmLowerBound
-entryRuleJvmLowerBound returns [EObject current=null] 
-	:
+entryRuleJvmLowerBound returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmLowerBoundRule()); }
-	 iv_ruleJvmLowerBound=ruleJvmLowerBound 
-	 { $current=$iv_ruleJvmLowerBound.current; } 
-	 EOF 
-;
+	iv_ruleJvmLowerBound=ruleJvmLowerBound
+	{ $current=$iv_ruleJvmLowerBound.current; }
+	EOF;
 
 // Rule JvmLowerBound
-ruleJvmLowerBound returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='super' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeReference_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
-	        }
-       		set(
-       			$current, 
-       			"typeReference",
-        		lv_typeReference_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleJvmLowerBound returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='super'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeReference_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
+					}
+					set(
+						$current,
+						"typeReference",
+						lv_typeReference_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleJvmLowerBoundAnded
-entryRuleJvmLowerBoundAnded returns [EObject current=null] 
-	:
+entryRuleJvmLowerBoundAnded returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); }
-	 iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded 
-	 { $current=$iv_ruleJvmLowerBoundAnded.current; } 
-	 EOF 
-;
+	iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded
+	{ $current=$iv_ruleJvmLowerBoundAnded.current; }
+	EOF;
 
 // Rule JvmLowerBoundAnded
-ruleJvmLowerBoundAnded returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='&' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
-	    }
-		lv_typeReference_1_0=ruleJvmTypeReference		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getJvmLowerBoundAndedRule());
-	        }
-       		set(
-       			$current, 
-       			"typeReference",
-        		lv_typeReference_1_0, 
-        		"JvmTypeReference");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleJvmLowerBoundAnded returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='&'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+				}
+				lv_typeReference_1_0=ruleJvmTypeReference
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getJvmLowerBoundAndedRule());
+					}
+					set(
+						$current,
+						"typeReference",
+						lv_typeReference_1_0,
+						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
-
-
 // Entry rule entryRuleQualifiedNameWithWildcard
-entryRuleQualifiedNameWithWildcard returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); } 
-	 iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard 
-	 { $current=$iv_ruleQualifiedNameWithWildcard.current.getText(); }  
-	 EOF 
-;
+entryRuleQualifiedNameWithWildcard returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); }
+	iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard
+	{ $current=$iv_ruleQualifiedNameWithWildcard.current.getText(); }
+	EOF;
 
 // Rule QualifiedNameWithWildcard
-ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
-    }
-    this_QualifiedName_0=ruleQualifiedName    {
-		$current.merge(this_QualifiedName_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
-    }
-
-	kw='*' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
-    }
-)
-    ;
-
-
-
-
-
-
-
-// Entry rule entryRuleXImportDeclaration
-entryRuleXImportDeclaration returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXImportDeclarationRule()); }
-	 iv_ruleXImportDeclaration=ruleXImportDeclaration 
-	 { $current=$iv_ruleXImportDeclaration.current; } 
-	 EOF 
+ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
+		}
+		this_QualifiedName_0=ruleQualifiedName
+		{
+			$current.merge(this_QualifiedName_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		kw='.'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
+		}
+		kw='*'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2());
+		}
+	)
 ;
 
-// Rule XImportDeclaration
-ruleXImportDeclaration returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='import' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getXImportDeclarationAccess().getImportKeyword_0());
-    }
-(((
-(
-		lv_static_1_0=	'static' 
-    {
-        newLeafNode(lv_static_1_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_1_0_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-       		setWithLastConsumed($current, "static", true, "static");
-	    }
+// Entry rule entryRuleValidID
+entryRuleValidID returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getValidIDRule()); }
+	iv_ruleValidID=ruleValidID
+	{ $current=$iv_ruleValidID.current.getText(); }
+	EOF;
 
-)
-)(
-(
-		lv_extension_2_0=	'extension' 
-    {
-        newLeafNode(lv_extension_2_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_1_0_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-       		setWithLastConsumed($current, "extension", true, "extension");
-	    }
-
-)
-)?(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0()); 
-	    }
-		ruleQualifiedNameInStaticImport		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_wildcard_4_0=	'*' 
-    {
-        newLeafNode(lv_wildcard_4_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_1_0_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-       		setWithLastConsumed($current, "wildcard", true, "*");
-	    }
-
-)
-)
-    |(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_1_0_3_1_0()); 
-	    }
-		lv_memberName_5_0=ruleValidID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"memberName",
-        		lv_memberName_5_0, 
-        		"ValidID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))
-    |(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_1_0()); 
-	    }
-		ruleQualifiedName		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)
-    |(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0()); 
-	    }
-		lv_importedNamespace_7_0=ruleQualifiedNameWithWildcard		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
-	        }
-       		set(
-       			$current, 
-       			"importedNamespace",
-        		lv_importedNamespace_7_0, 
-        		"QualifiedNameWithWildcard");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))(	otherlv_8=';' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
-    }
-)?)
+// Rule ValidID
+ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	this_ID_0=RULE_ID
+	{
+		$current.merge(this_ID_0);
+	}
+	{
+		newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall());
+	}
 ;
 
+// Entry rule entryRuleXImportSection
+entryRuleXImportSection returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXImportSectionRule()); }
+	iv_ruleXImportSection=ruleXImportSection
+	{ $current=$iv_ruleXImportSection.current; }
+	EOF;
 
-
-
+// Rule XImportSection
+ruleXImportSection returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				newCompositeNode(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0());
+			}
+			lv_importDeclarations_0_0=ruleXImportDeclaration
+			{
+				if ($current==null) {
+					$current = createModelElementForParent(grammarAccess.getXImportSectionRule());
+				}
+				add(
+					$current,
+					"importDeclarations",
+					lv_importDeclarations_0_0,
+					"org.eclipse.osbp.xtext.oxtype.OXtype.XImportDeclaration");
+				afterParserOrEnumRuleCall();
+			}
+		)
+	)+
+;
 
 // Entry rule entryRuleQualifiedNameInStaticImport
-entryRuleQualifiedNameInStaticImport returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); } 
-	 iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport 
-	 { $current=$iv_ruleQualifiedNameInStaticImport.current.getText(); }  
-	 EOF 
-;
+entryRuleQualifiedNameInStaticImport returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); }
+	iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport
+	{ $current=$iv_ruleQualifiedNameInStaticImport.current.getText(); }
+	EOF;
 
 // Rule QualifiedNameInStaticImport
-ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
-    }
-    this_ValidID_0=ruleValidID    {
-		$current.merge(this_ValidID_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
-    }
-)+
-    ;
-
-
-
-
+ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
+		}
+		this_ValidID_0=ruleValidID
+		{
+			$current.merge(this_ValidID_0);
+		}
+		{
+			afterParserOrEnumRuleCall();
+		}
+		kw='.'
+		{
+			$current.merge(kw);
+			newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
+		}
+	)+
+;
 
 // Rule TaskActionEnum
-ruleTaskActionEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='Claim' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='Start' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1()); 
-    }
-)
-    |(	enumLiteral_2='Stop' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_2, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2()); 
-    }
-)
-    |(	enumLiteral_3='Release' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_3, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3()); 
-    }
-)
-    |(	enumLiteral_4='Suspend' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_4, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4()); 
-    }
-)
-    |(	enumLiteral_5='Resume' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_5, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5()); 
-    }
-)
-    |(	enumLiteral_6='Skip' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_6, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6()); 
-    }
-)
-    |(	enumLiteral_7='Complete' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_7, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7()); 
-    }
-)
-    |(	enumLiteral_8='Delegate' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_8, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8()); 
-    }
-)
-    |(	enumLiteral_9='Forward' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_9, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9()); 
-    }
-)
-    |(	enumLiteral_10='Fail' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_10, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10()); 
-    }
-)
-    |(	enumLiteral_11='Register' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_11, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11()); 
-    }
-)
-    |(	enumLiteral_12='Remove' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_12, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12()); 
-    }
-)
-    |(	enumLiteral_13='Activate' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_13, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13()); 
-    }
-)
-    |(	enumLiteral_14='Exit' 
-	{
-        $current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_14, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14()); 
-    }
-));
-
-
+ruleTaskActionEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='Claim'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='Start'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='Stop'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='Release'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3());
+			}
+		)
+		    |
+		(
+			enumLiteral_4='Suspend'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_4, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4());
+			}
+		)
+		    |
+		(
+			enumLiteral_5='Resume'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_5, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5());
+			}
+		)
+		    |
+		(
+			enumLiteral_6='Skip'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_6, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6());
+			}
+		)
+		    |
+		(
+			enumLiteral_7='Complete'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_7, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7());
+			}
+		)
+		    |
+		(
+			enumLiteral_8='Delegate'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_8, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8());
+			}
+		)
+		    |
+		(
+			enumLiteral_9='Forward'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_9, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9());
+			}
+		)
+		    |
+		(
+			enumLiteral_10='Fail'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_10, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10());
+			}
+		)
+		    |
+		(
+			enumLiteral_11='Register'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_11, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11());
+			}
+		)
+		    |
+		(
+			enumLiteral_12='Remove'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_12, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12());
+			}
+		)
+		    |
+		(
+			enumLiteral_13='Activate'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_13, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13());
+			}
+		)
+		    |
+		(
+			enumLiteral_14='Exit'
+			{
+				$current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_14, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14());
+			}
+		)
+	)
+;
 
 // Rule SelectWorkloadActionEnum
-ruleSelectWorkloadActionEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='RemoveAll' 
-	{
-        $current = grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='AddAll' 
-	{
-        $current = grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1()); 
-    }
-));
-
-
+ruleSelectWorkloadActionEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='RemoveAll'
+			{
+				$current = grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='AddAll'
+			{
+				$current = grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1());
+			}
+		)
+	)
+;
 
 // Rule DialogActionEnum
-ruleDialogActionEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='New' 
-	{
-        $current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='Save' 
-	{
-        $current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1()); 
-    }
-)
-    |(	enumLiteral_2='Delete' 
-	{
-        $current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_2, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2()); 
-    }
-)
-    |(	enumLiteral_3='Cancel' 
-	{
-        $current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_3, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3()); 
-    }
-));
-
-
+ruleDialogActionEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='New'
+			{
+				$current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='Save'
+			{
+				$current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='Delete'
+			{
+				$current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='Cancel'
+			{
+				$current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3());
+			}
+		)
+	)
+;
 
 // Rule ReportActionEnum
-ruleReportActionEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='PrintOnServer' 
-	{
-        $current = grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='Download' 
-	{
-        $current = grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1()); 
-    }
-));
-
-
+ruleReportActionEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='PrintOnServer'
+			{
+				$current = grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='Download'
+			{
+				$current = grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1());
+			}
+		)
+	)
+;
 
 // Rule ChartActionEnum
-ruleChartActionEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-(	enumLiteral_0='Download' 
-	{
-        $current = grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration()); 
-    }
-);
-
-
+ruleChartActionEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		enumLiteral_0='Download'
+		{
+			$current = grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration().getEnumLiteral().getInstance();
+			newLeafNode(enumLiteral_0, grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration());
+		}
+	)
+;
 
 // Rule WorkflowActionEnum
-ruleWorkflowActionEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-(	enumLiteral_0='Start' 
-	{
-        $current = grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration()); 
-    }
-);
-
-
+ruleWorkflowActionEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		enumLiteral_0='Start'
+		{
+			$current = grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration().getEnumLiteral().getInstance();
+			newLeafNode(enumLiteral_0, grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration());
+		}
+	)
+;
 
 // Rule DatainterchangeActionEnum
-ruleDatainterchangeActionEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='Import' 
-	{
-        $current = grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='Export' 
-	{
-        $current = grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1()); 
-    }
-));
+ruleDatainterchangeActionEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='Import'
+			{
+				$current = grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='Export'
+			{
+				$current = grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1());
+			}
+		)
+	)
+;
 
-
+// Rule UIActionEnum
+ruleUIActionEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='NextPart'
+			{
+				$current = grammarAccess.getUIActionEnumAccess().getNEXT_PARTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getUIActionEnumAccess().getNEXT_PARTEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='PreviousPart'
+			{
+				$current = grammarAccess.getUIActionEnumAccess().getPREVIOUS_PARTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getUIActionEnumAccess().getPREVIOUS_PARTEnumLiteralDeclaration_1());
+			}
+		)
+	)
+;
 
 RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
 
@@ -7778,5 +8534,3 @@
 RULE_WS : (' '|'\t'|'\r'|'\n')+;
 
 RULE_ANY_OTHER : .;
-
-
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.tokens b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.tokens
index 4d5170c..0c5ccf3 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.tokens
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.tokens
@@ -1,120 +1,130 @@
-'!'=70
-'!='=55
-'!=='=57
-'#'=41
-'%'=69
-'%='=48
-'&&'=53
-'&'=105
-'('=37
-')'=39
-'*'=35
-'**'=67
-'*='=46
-'+'=65
-'++'=72
-'+='=44
-','=38
-'-'=66
-'--'=73
-'-='=45
-'->'=59
-'.'=34
-'..'=61
-'..<'=60
-'/'=68
-'/='=47
-':'=81
-'::'=74
-';'=77
-'<'=49
-'<>'=63
-'='=40
-'=='=54
-'==='=56
-'=>'=62
-'>'=50
-'>='=51
-'?'=104
-'?.'=75
-'?:'=64
-'@'=36
-'Activate'=119
-'AddAll'=122
-'Cancel'=126
-'Claim'=106
-'Complete'=113
-'Delegate'=114
-'Delete'=125
-'Download'=128
-'Exit'=120
-'Export'=130
-'Fail'=116
-'Forward'=115
-'Import'=129
-'New'=123
-'PrintOnServer'=127
-'Register'=117
-'Release'=109
-'Remove'=118
-'RemoveAll'=121
-'Resume'=111
-'Save'=124
-'Skip'=112
-'Start'=107
-'Stop'=108
-'Suspend'=110
-'['=42
-']'=43
-'as'=71
-'canExecute'=22
-'case'=83
-'catch'=103
-'chartAction'=29
-'datainterchangeAction'=31
-'default'=82
-'described by'=17
-'dialogAction'=27
-'do'=86
-'else'=79
-'executeParameter'=23
-'extends'=89
-'extension'=91
-'false'=94
-'finally'=101
-'for'=84
-'genericAction'=32
-'group'=21
-'icon'=20
-'if'=78
-'import'=33
-'instanceof'=58
-'item'=19
-'items'=18
-'message'=24
-'new'=93
-'null'=96
+'!'=80
+'!='=65
+'!=='=67
+'#'=51
+'%'=79
+'%='=58
+'&&'=63
+'&'=113
+'('=47
+')'=49
+'*'=43
+'**'=77
+'*='=56
+'+'=75
+'++'=82
+'+='=54
+','=48
+'-'=76
+'--'=83
+'-='=55
+'->'=69
+'.'=84
+'..'=71
+'..<'=70
+'/'=78
+'/='=57
+':'=91
+'::'=85
+';'=45
+'<'=59
+'<>'=73
+'='=50
+'=='=64
+'==='=66
+'=>'=72
+'>'=60
+'>='=61
+'?'=112
+'?.'=86
+'?:'=74
+'@'=46
+'Activate'=127
+'AddAll'=130
+'Cancel'=134
+'Claim'=114
+'Complete'=121
+'Delegate'=122
+'Delete'=133
+'Download'=136
+'Exit'=128
+'Export'=138
+'Fail'=124
+'Forward'=123
+'Import'=137
+'New'=131
+'NextPart'=139
+'PreviousPart'=140
+'PrintOnServer'=135
+'Register'=125
+'Release'=117
+'Remove'=126
+'RemoveAll'=129
+'Resume'=119
+'Save'=132
+'Skip'=120
+'Start'=115
+'Stop'=116
+'Suspend'=118
+'['=52
+']'=53
+'as'=81
+'canExecute'=33
+'case'=93
+'catch'=111
+'chartAction'=27
+'command'=16
+'datainterchangeAction'=29
+'default'=92
+'describedBy'=17
+'dialogAction'=25
+'do'=96
+'else'=89
+'executeImmediate'=34
+'executeLater'=38
+'extends'=99
+'extension'=42
+'false'=102
+'finally'=109
+'for'=94
+'functionalAction'=31
+'group'=32
+'icon'=22
+'if'=88
+'import'=40
+'instanceof'=68
+'item'=21
+'items'=20
+'keyBinding'=18
+'messageCategory'=35
+'new'=101
+'ns'=44
+'null'=104
+'onFailMessage'=36
+'onStartedMessage'=39
+'onSuccessMessage'=37
 'package'=13
-'reportAction'=28
-'return'=99
-'selectWorkloadAction'=26
-'static'=90
-'super'=92
-'switch'=80
-'synchronized'=102
-'taskAction'=25
-'throw'=98
-'toolbar'=16
-'true'=95
-'try'=100
-'typeof'=97
-'val'=88
-'var'=87
-'while'=85
-'workflowAction'=30
+'reportAction'=26
+'return'=107
+'selectWorkloadAction'=24
+'static'=41
+'super'=100
+'switch'=90
+'synchronized'=110
+'taskAction'=23
+'throw'=106
+'toolbar'=19
+'true'=103
+'try'=108
+'typeof'=105
+'userinterfaceAction'=30
+'val'=98
+'var'=97
+'while'=95
+'workflowAction'=28
 '{'=14
-'|'=76
-'||'=52
+'|'=87
+'||'=62
 '}'=15
 RULE_ANY_OTHER=12
 RULE_DECIMAL=8
@@ -156,7 +166,17 @@
 T__128=128
 T__129=129
 T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
 T__13=13
+T__140=140
 T__14=14
 T__15=15
 T__16=16
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSLLexer.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSLLexer.java
index c780b91..19fcd84 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSLLexer.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSLLexer.java
@@ -27,18 +27,28 @@
 public class InternalActionDSLLexer extends Lexer {
     public static final int RULE_HEX=6;
     public static final int T__50=50;
+    public static final int T__140=140;
     public static final int T__59=59;
     public static final int T__55=55;
     public static final int T__56=56;
     public static final int T__57=57;
     public static final int T__58=58;
     public static final int T__51=51;
+    public static final int T__137=137;
     public static final int T__52=52;
+    public static final int T__136=136;
     public static final int T__53=53;
+    public static final int T__139=139;
     public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
     public static final int T__60=60;
+    public static final int T__135=135;
     public static final int T__61=61;
+    public static final int T__134=134;
     public static final int RULE_ID=4;
+    public static final int T__131=131;
     public static final int T__130=130;
     public static final int RULE_INT=7;
     public static final int T__66=66;
@@ -165,15 +175,15 @@
         super(input,state);
 
     }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g"; }
+    public String getGrammarFileName() { return "InternalActionDSL.g"; }
 
     // $ANTLR start "T__13"
     public final void mT__13() throws RecognitionException {
         try {
             int _type = T__13;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:11:7: ( 'package' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:11:9: 'package'
+            // InternalActionDSL.g:11:7: ( 'package' )
+            // InternalActionDSL.g:11:9: 'package'
             {
             match("package"); 
 
@@ -193,8 +203,8 @@
         try {
             int _type = T__14;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:12:7: ( '{' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:12:9: '{'
+            // InternalActionDSL.g:12:7: ( '{' )
+            // InternalActionDSL.g:12:9: '{'
             {
             match('{'); 
 
@@ -213,8 +223,8 @@
         try {
             int _type = T__15;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:13:7: ( '}' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:13:9: '}'
+            // InternalActionDSL.g:13:7: ( '}' )
+            // InternalActionDSL.g:13:9: '}'
             {
             match('}'); 
 
@@ -233,10 +243,10 @@
         try {
             int _type = T__16;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:14:7: ( 'toolbar' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:14:9: 'toolbar'
+            // InternalActionDSL.g:14:7: ( 'command' )
+            // InternalActionDSL.g:14:9: 'command'
             {
-            match("toolbar"); 
+            match("command"); 
 
 
             }
@@ -254,10 +264,10 @@
         try {
             int _type = T__17;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:15:7: ( 'described by' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:15:9: 'described by'
+            // InternalActionDSL.g:15:7: ( 'describedBy' )
+            // InternalActionDSL.g:15:9: 'describedBy'
             {
-            match("described by"); 
+            match("describedBy"); 
 
 
             }
@@ -275,10 +285,10 @@
         try {
             int _type = T__18;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:16:7: ( 'items' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:16:9: 'items'
+            // InternalActionDSL.g:16:7: ( 'keyBinding' )
+            // InternalActionDSL.g:16:9: 'keyBinding'
             {
-            match("items"); 
+            match("keyBinding"); 
 
 
             }
@@ -296,10 +306,10 @@
         try {
             int _type = T__19;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:17:7: ( 'item' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:17:9: 'item'
+            // InternalActionDSL.g:17:7: ( 'toolbar' )
+            // InternalActionDSL.g:17:9: 'toolbar'
             {
-            match("item"); 
+            match("toolbar"); 
 
 
             }
@@ -317,10 +327,10 @@
         try {
             int _type = T__20;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:18:7: ( 'icon' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:18:9: 'icon'
+            // InternalActionDSL.g:18:7: ( 'items' )
+            // InternalActionDSL.g:18:9: 'items'
             {
-            match("icon"); 
+            match("items"); 
 
 
             }
@@ -338,10 +348,10 @@
         try {
             int _type = T__21;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:19:7: ( 'group' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:19:9: 'group'
+            // InternalActionDSL.g:19:7: ( 'item' )
+            // InternalActionDSL.g:19:9: 'item'
             {
-            match("group"); 
+            match("item"); 
 
 
             }
@@ -359,10 +369,10 @@
         try {
             int _type = T__22;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:20:7: ( 'canExecute' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:20:9: 'canExecute'
+            // InternalActionDSL.g:20:7: ( 'icon' )
+            // InternalActionDSL.g:20:9: 'icon'
             {
-            match("canExecute"); 
+            match("icon"); 
 
 
             }
@@ -380,10 +390,10 @@
         try {
             int _type = T__23;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:21:7: ( 'executeParameter' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:21:9: 'executeParameter'
+            // InternalActionDSL.g:21:7: ( 'taskAction' )
+            // InternalActionDSL.g:21:9: 'taskAction'
             {
-            match("executeParameter"); 
+            match("taskAction"); 
 
 
             }
@@ -401,10 +411,10 @@
         try {
             int _type = T__24;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:22:7: ( 'message' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:22:9: 'message'
+            // InternalActionDSL.g:22:7: ( 'selectWorkloadAction' )
+            // InternalActionDSL.g:22:9: 'selectWorkloadAction'
             {
-            match("message"); 
+            match("selectWorkloadAction"); 
 
 
             }
@@ -422,10 +432,10 @@
         try {
             int _type = T__25;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:23:7: ( 'taskAction' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:23:9: 'taskAction'
+            // InternalActionDSL.g:23:7: ( 'dialogAction' )
+            // InternalActionDSL.g:23:9: 'dialogAction'
             {
-            match("taskAction"); 
+            match("dialogAction"); 
 
 
             }
@@ -443,10 +453,10 @@
         try {
             int _type = T__26;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:24:7: ( 'selectWorkloadAction' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:24:9: 'selectWorkloadAction'
+            // InternalActionDSL.g:24:7: ( 'reportAction' )
+            // InternalActionDSL.g:24:9: 'reportAction'
             {
-            match("selectWorkloadAction"); 
+            match("reportAction"); 
 
 
             }
@@ -464,10 +474,10 @@
         try {
             int _type = T__27;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:25:7: ( 'dialogAction' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:25:9: 'dialogAction'
+            // InternalActionDSL.g:25:7: ( 'chartAction' )
+            // InternalActionDSL.g:25:9: 'chartAction'
             {
-            match("dialogAction"); 
+            match("chartAction"); 
 
 
             }
@@ -485,10 +495,10 @@
         try {
             int _type = T__28;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:26:7: ( 'reportAction' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:26:9: 'reportAction'
+            // InternalActionDSL.g:26:7: ( 'workflowAction' )
+            // InternalActionDSL.g:26:9: 'workflowAction'
             {
-            match("reportAction"); 
+            match("workflowAction"); 
 
 
             }
@@ -506,10 +516,10 @@
         try {
             int _type = T__29;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:27:7: ( 'chartAction' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:27:9: 'chartAction'
+            // InternalActionDSL.g:27:7: ( 'datainterchangeAction' )
+            // InternalActionDSL.g:27:9: 'datainterchangeAction'
             {
-            match("chartAction"); 
+            match("datainterchangeAction"); 
 
 
             }
@@ -527,10 +537,10 @@
         try {
             int _type = T__30;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:28:7: ( 'workflowAction' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:28:9: 'workflowAction'
+            // InternalActionDSL.g:28:7: ( 'userinterfaceAction' )
+            // InternalActionDSL.g:28:9: 'userinterfaceAction'
             {
-            match("workflowAction"); 
+            match("userinterfaceAction"); 
 
 
             }
@@ -548,10 +558,10 @@
         try {
             int _type = T__31;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:29:7: ( 'datainterchangeAction' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:29:9: 'datainterchangeAction'
+            // InternalActionDSL.g:29:7: ( 'functionalAction' )
+            // InternalActionDSL.g:29:9: 'functionalAction'
             {
-            match("datainterchangeAction"); 
+            match("functionalAction"); 
 
 
             }
@@ -569,10 +579,10 @@
         try {
             int _type = T__32;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:30:7: ( 'genericAction' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:30:9: 'genericAction'
+            // InternalActionDSL.g:30:7: ( 'group' )
+            // InternalActionDSL.g:30:9: 'group'
             {
-            match("genericAction"); 
+            match("group"); 
 
 
             }
@@ -590,10 +600,10 @@
         try {
             int _type = T__33;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:31:7: ( 'import' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:31:9: 'import'
+            // InternalActionDSL.g:31:7: ( 'canExecute' )
+            // InternalActionDSL.g:31:9: 'canExecute'
             {
-            match("import"); 
+            match("canExecute"); 
 
 
             }
@@ -611,10 +621,11 @@
         try {
             int _type = T__34;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:32:7: ( '.' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:32:9: '.'
+            // InternalActionDSL.g:32:7: ( 'executeImmediate' )
+            // InternalActionDSL.g:32:9: 'executeImmediate'
             {
-            match('.'); 
+            match("executeImmediate"); 
+
 
             }
 
@@ -631,10 +642,11 @@
         try {
             int _type = T__35;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:33:7: ( '*' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:33:9: '*'
+            // InternalActionDSL.g:33:7: ( 'messageCategory' )
+            // InternalActionDSL.g:33:9: 'messageCategory'
             {
-            match('*'); 
+            match("messageCategory"); 
+
 
             }
 
@@ -651,10 +663,11 @@
         try {
             int _type = T__36;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:34:7: ( '@' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:34:9: '@'
+            // InternalActionDSL.g:34:7: ( 'onFailMessage' )
+            // InternalActionDSL.g:34:9: 'onFailMessage'
             {
-            match('@'); 
+            match("onFailMessage"); 
+
 
             }
 
@@ -671,10 +684,11 @@
         try {
             int _type = T__37;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:35:7: ( '(' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:35:9: '('
+            // InternalActionDSL.g:35:7: ( 'onSuccessMessage' )
+            // InternalActionDSL.g:35:9: 'onSuccessMessage'
             {
-            match('('); 
+            match("onSuccessMessage"); 
+
 
             }
 
@@ -691,10 +705,11 @@
         try {
             int _type = T__38;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:36:7: ( ',' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:36:9: ','
+            // InternalActionDSL.g:36:7: ( 'executeLater' )
+            // InternalActionDSL.g:36:9: 'executeLater'
             {
-            match(','); 
+            match("executeLater"); 
+
 
             }
 
@@ -711,10 +726,11 @@
         try {
             int _type = T__39;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:37:7: ( ')' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:37:9: ')'
+            // InternalActionDSL.g:37:7: ( 'onStartedMessage' )
+            // InternalActionDSL.g:37:9: 'onStartedMessage'
             {
-            match(')'); 
+            match("onStartedMessage"); 
+
 
             }
 
@@ -731,10 +747,11 @@
         try {
             int _type = T__40;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:38:7: ( '=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:38:9: '='
+            // InternalActionDSL.g:38:7: ( 'import' )
+            // InternalActionDSL.g:38:9: 'import'
             {
-            match('='); 
+            match("import"); 
+
 
             }
 
@@ -751,10 +768,11 @@
         try {
             int _type = T__41;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:39:7: ( '#' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:39:9: '#'
+            // InternalActionDSL.g:39:7: ( 'static' )
+            // InternalActionDSL.g:39:9: 'static'
             {
-            match('#'); 
+            match("static"); 
+
 
             }
 
@@ -771,10 +789,11 @@
         try {
             int _type = T__42;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:40:7: ( '[' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:40:9: '['
+            // InternalActionDSL.g:40:7: ( 'extension' )
+            // InternalActionDSL.g:40:9: 'extension'
             {
-            match('['); 
+            match("extension"); 
+
 
             }
 
@@ -791,10 +810,10 @@
         try {
             int _type = T__43;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:41:7: ( ']' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:41:9: ']'
+            // InternalActionDSL.g:41:7: ( '*' )
+            // InternalActionDSL.g:41:9: '*'
             {
-            match(']'); 
+            match('*'); 
 
             }
 
@@ -811,10 +830,10 @@
         try {
             int _type = T__44;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:42:7: ( '+=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:42:9: '+='
+            // InternalActionDSL.g:42:7: ( 'ns' )
+            // InternalActionDSL.g:42:9: 'ns'
             {
-            match("+="); 
+            match("ns"); 
 
 
             }
@@ -832,11 +851,10 @@
         try {
             int _type = T__45;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:43:7: ( '-=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:43:9: '-='
+            // InternalActionDSL.g:43:7: ( ';' )
+            // InternalActionDSL.g:43:9: ';'
             {
-            match("-="); 
-
+            match(';'); 
 
             }
 
@@ -853,11 +871,10 @@
         try {
             int _type = T__46;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:44:7: ( '*=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:44:9: '*='
+            // InternalActionDSL.g:44:7: ( '@' )
+            // InternalActionDSL.g:44:9: '@'
             {
-            match("*="); 
-
+            match('@'); 
 
             }
 
@@ -874,11 +891,10 @@
         try {
             int _type = T__47;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:45:7: ( '/=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:45:9: '/='
+            // InternalActionDSL.g:45:7: ( '(' )
+            // InternalActionDSL.g:45:9: '('
             {
-            match("/="); 
-
+            match('('); 
 
             }
 
@@ -895,11 +911,10 @@
         try {
             int _type = T__48;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:46:7: ( '%=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:46:9: '%='
+            // InternalActionDSL.g:46:7: ( ',' )
+            // InternalActionDSL.g:46:9: ','
             {
-            match("%="); 
-
+            match(','); 
 
             }
 
@@ -916,10 +931,10 @@
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:47:7: ( '<' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:47:9: '<'
+            // InternalActionDSL.g:47:7: ( ')' )
+            // InternalActionDSL.g:47:9: ')'
             {
-            match('<'); 
+            match(')'); 
 
             }
 
@@ -936,10 +951,10 @@
         try {
             int _type = T__50;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:48:7: ( '>' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:48:9: '>'
+            // InternalActionDSL.g:48:7: ( '=' )
+            // InternalActionDSL.g:48:9: '='
             {
-            match('>'); 
+            match('='); 
 
             }
 
@@ -956,11 +971,10 @@
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:49:7: ( '>=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:49:9: '>='
+            // InternalActionDSL.g:49:7: ( '#' )
+            // InternalActionDSL.g:49:9: '#'
             {
-            match(">="); 
-
+            match('#'); 
 
             }
 
@@ -977,11 +991,10 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:50:7: ( '||' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:50:9: '||'
+            // InternalActionDSL.g:50:7: ( '[' )
+            // InternalActionDSL.g:50:9: '['
             {
-            match("||"); 
-
+            match('['); 
 
             }
 
@@ -998,11 +1011,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:51:7: ( '&&' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:51:9: '&&'
+            // InternalActionDSL.g:51:7: ( ']' )
+            // InternalActionDSL.g:51:9: ']'
             {
-            match("&&"); 
-
+            match(']'); 
 
             }
 
@@ -1019,10 +1031,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:52:7: ( '==' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:52:9: '=='
+            // InternalActionDSL.g:52:7: ( '+=' )
+            // InternalActionDSL.g:52:9: '+='
             {
-            match("=="); 
+            match("+="); 
 
 
             }
@@ -1040,10 +1052,10 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:53:7: ( '!=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:53:9: '!='
+            // InternalActionDSL.g:53:7: ( '-=' )
+            // InternalActionDSL.g:53:9: '-='
             {
-            match("!="); 
+            match("-="); 
 
 
             }
@@ -1061,10 +1073,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:54:7: ( '===' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:54:9: '==='
+            // InternalActionDSL.g:54:7: ( '*=' )
+            // InternalActionDSL.g:54:9: '*='
             {
-            match("==="); 
+            match("*="); 
 
 
             }
@@ -1082,10 +1094,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:55:7: ( '!==' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:55:9: '!=='
+            // InternalActionDSL.g:55:7: ( '/=' )
+            // InternalActionDSL.g:55:9: '/='
             {
-            match("!=="); 
+            match("/="); 
 
 
             }
@@ -1103,10 +1115,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:56:7: ( 'instanceof' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:56:9: 'instanceof'
+            // InternalActionDSL.g:56:7: ( '%=' )
+            // InternalActionDSL.g:56:9: '%='
             {
-            match("instanceof"); 
+            match("%="); 
 
 
             }
@@ -1124,11 +1136,10 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:57:7: ( '->' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:57:9: '->'
+            // InternalActionDSL.g:57:7: ( '<' )
+            // InternalActionDSL.g:57:9: '<'
             {
-            match("->"); 
-
+            match('<'); 
 
             }
 
@@ -1145,11 +1156,10 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:58:7: ( '..<' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:58:9: '..<'
+            // InternalActionDSL.g:58:7: ( '>' )
+            // InternalActionDSL.g:58:9: '>'
             {
-            match("..<"); 
-
+            match('>'); 
 
             }
 
@@ -1166,10 +1176,10 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:59:7: ( '..' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:59:9: '..'
+            // InternalActionDSL.g:59:7: ( '>=' )
+            // InternalActionDSL.g:59:9: '>='
             {
-            match(".."); 
+            match(">="); 
 
 
             }
@@ -1187,10 +1197,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:60:7: ( '=>' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:60:9: '=>'
+            // InternalActionDSL.g:60:7: ( '||' )
+            // InternalActionDSL.g:60:9: '||'
             {
-            match("=>"); 
+            match("||"); 
 
 
             }
@@ -1208,10 +1218,10 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:61:7: ( '<>' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:61:9: '<>'
+            // InternalActionDSL.g:61:7: ( '&&' )
+            // InternalActionDSL.g:61:9: '&&'
             {
-            match("<>"); 
+            match("&&"); 
 
 
             }
@@ -1229,10 +1239,10 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:62:7: ( '?:' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:62:9: '?:'
+            // InternalActionDSL.g:62:7: ( '==' )
+            // InternalActionDSL.g:62:9: '=='
             {
-            match("?:"); 
+            match("=="); 
 
 
             }
@@ -1250,10 +1260,11 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:63:7: ( '+' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:63:9: '+'
+            // InternalActionDSL.g:63:7: ( '!=' )
+            // InternalActionDSL.g:63:9: '!='
             {
-            match('+'); 
+            match("!="); 
+
 
             }
 
@@ -1270,10 +1281,11 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:64:7: ( '-' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:64:9: '-'
+            // InternalActionDSL.g:64:7: ( '===' )
+            // InternalActionDSL.g:64:9: '==='
             {
-            match('-'); 
+            match("==="); 
+
 
             }
 
@@ -1290,10 +1302,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:65:7: ( '**' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:65:9: '**'
+            // InternalActionDSL.g:65:7: ( '!==' )
+            // InternalActionDSL.g:65:9: '!=='
             {
-            match("**"); 
+            match("!=="); 
 
 
             }
@@ -1311,10 +1323,11 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:66:7: ( '/' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:66:9: '/'
+            // InternalActionDSL.g:66:7: ( 'instanceof' )
+            // InternalActionDSL.g:66:9: 'instanceof'
             {
-            match('/'); 
+            match("instanceof"); 
+
 
             }
 
@@ -1331,10 +1344,11 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:67:7: ( '%' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:67:9: '%'
+            // InternalActionDSL.g:67:7: ( '->' )
+            // InternalActionDSL.g:67:9: '->'
             {
-            match('%'); 
+            match("->"); 
+
 
             }
 
@@ -1351,10 +1365,11 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:68:7: ( '!' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:68:9: '!'
+            // InternalActionDSL.g:68:7: ( '..<' )
+            // InternalActionDSL.g:68:9: '..<'
             {
-            match('!'); 
+            match("..<"); 
+
 
             }
 
@@ -1371,10 +1386,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:69:7: ( 'as' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:69:9: 'as'
+            // InternalActionDSL.g:69:7: ( '..' )
+            // InternalActionDSL.g:69:9: '..'
             {
-            match("as"); 
+            match(".."); 
 
 
             }
@@ -1392,10 +1407,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:70:7: ( '++' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:70:9: '++'
+            // InternalActionDSL.g:70:7: ( '=>' )
+            // InternalActionDSL.g:70:9: '=>'
             {
-            match("++"); 
+            match("=>"); 
 
 
             }
@@ -1413,10 +1428,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:71:7: ( '--' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:71:9: '--'
+            // InternalActionDSL.g:71:7: ( '<>' )
+            // InternalActionDSL.g:71:9: '<>'
             {
-            match("--"); 
+            match("<>"); 
 
 
             }
@@ -1434,10 +1449,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:72:7: ( '::' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:72:9: '::'
+            // InternalActionDSL.g:72:7: ( '?:' )
+            // InternalActionDSL.g:72:9: '?:'
             {
-            match("::"); 
+            match("?:"); 
 
 
             }
@@ -1455,11 +1470,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:73:7: ( '?.' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:73:9: '?.'
+            // InternalActionDSL.g:73:7: ( '+' )
+            // InternalActionDSL.g:73:9: '+'
             {
-            match("?."); 
-
+            match('+'); 
 
             }
 
@@ -1476,10 +1490,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:74:7: ( '|' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:74:9: '|'
+            // InternalActionDSL.g:74:7: ( '-' )
+            // InternalActionDSL.g:74:9: '-'
             {
-            match('|'); 
+            match('-'); 
 
             }
 
@@ -1496,10 +1510,11 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:75:7: ( ';' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:75:9: ';'
+            // InternalActionDSL.g:75:7: ( '**' )
+            // InternalActionDSL.g:75:9: '**'
             {
-            match(';'); 
+            match("**"); 
+
 
             }
 
@@ -1516,11 +1531,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:76:7: ( 'if' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:76:9: 'if'
+            // InternalActionDSL.g:76:7: ( '/' )
+            // InternalActionDSL.g:76:9: '/'
             {
-            match("if"); 
-
+            match('/'); 
 
             }
 
@@ -1537,11 +1551,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:77:7: ( 'else' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:77:9: 'else'
+            // InternalActionDSL.g:77:7: ( '%' )
+            // InternalActionDSL.g:77:9: '%'
             {
-            match("else"); 
-
+            match('%'); 
 
             }
 
@@ -1558,11 +1571,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:78:7: ( 'switch' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:78:9: 'switch'
+            // InternalActionDSL.g:78:7: ( '!' )
+            // InternalActionDSL.g:78:9: '!'
             {
-            match("switch"); 
-
+            match('!'); 
 
             }
 
@@ -1579,10 +1591,11 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:79:7: ( ':' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:79:9: ':'
+            // InternalActionDSL.g:79:7: ( 'as' )
+            // InternalActionDSL.g:79:9: 'as'
             {
-            match(':'); 
+            match("as"); 
+
 
             }
 
@@ -1599,10 +1612,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:80:7: ( 'default' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:80:9: 'default'
+            // InternalActionDSL.g:80:7: ( '++' )
+            // InternalActionDSL.g:80:9: '++'
             {
-            match("default"); 
+            match("++"); 
 
 
             }
@@ -1620,10 +1633,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:81:7: ( 'case' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:81:9: 'case'
+            // InternalActionDSL.g:81:7: ( '--' )
+            // InternalActionDSL.g:81:9: '--'
             {
-            match("case"); 
+            match("--"); 
 
 
             }
@@ -1641,11 +1654,10 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:82:7: ( 'for' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:82:9: 'for'
+            // InternalActionDSL.g:82:7: ( '.' )
+            // InternalActionDSL.g:82:9: '.'
             {
-            match("for"); 
-
+            match('.'); 
 
             }
 
@@ -1662,10 +1674,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:83:7: ( 'while' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:83:9: 'while'
+            // InternalActionDSL.g:83:7: ( '::' )
+            // InternalActionDSL.g:83:9: '::'
             {
-            match("while"); 
+            match("::"); 
 
 
             }
@@ -1683,10 +1695,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:84:7: ( 'do' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:84:9: 'do'
+            // InternalActionDSL.g:84:7: ( '?.' )
+            // InternalActionDSL.g:84:9: '?.'
             {
-            match("do"); 
+            match("?."); 
 
 
             }
@@ -1704,11 +1716,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:85:7: ( 'var' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:85:9: 'var'
+            // InternalActionDSL.g:85:7: ( '|' )
+            // InternalActionDSL.g:85:9: '|'
             {
-            match("var"); 
-
+            match('|'); 
 
             }
 
@@ -1725,10 +1736,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:86:7: ( 'val' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:86:9: 'val'
+            // InternalActionDSL.g:86:7: ( 'if' )
+            // InternalActionDSL.g:86:9: 'if'
             {
-            match("val"); 
+            match("if"); 
 
 
             }
@@ -1746,10 +1757,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:87:7: ( 'extends' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:87:9: 'extends'
+            // InternalActionDSL.g:87:7: ( 'else' )
+            // InternalActionDSL.g:87:9: 'else'
             {
-            match("extends"); 
+            match("else"); 
 
 
             }
@@ -1767,10 +1778,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:88:7: ( 'static' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:88:9: 'static'
+            // InternalActionDSL.g:88:7: ( 'switch' )
+            // InternalActionDSL.g:88:9: 'switch'
             {
-            match("static"); 
+            match("switch"); 
 
 
             }
@@ -1788,11 +1799,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:89:7: ( 'extension' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:89:9: 'extension'
+            // InternalActionDSL.g:89:7: ( ':' )
+            // InternalActionDSL.g:89:9: ':'
             {
-            match("extension"); 
-
+            match(':'); 
 
             }
 
@@ -1809,10 +1819,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:90:7: ( 'super' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:90:9: 'super'
+            // InternalActionDSL.g:90:7: ( 'default' )
+            // InternalActionDSL.g:90:9: 'default'
             {
-            match("super"); 
+            match("default"); 
 
 
             }
@@ -1830,10 +1840,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:91:7: ( 'new' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:91:9: 'new'
+            // InternalActionDSL.g:91:7: ( 'case' )
+            // InternalActionDSL.g:91:9: 'case'
             {
-            match("new"); 
+            match("case"); 
 
 
             }
@@ -1851,10 +1861,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:92:7: ( 'false' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:92:9: 'false'
+            // InternalActionDSL.g:92:7: ( 'for' )
+            // InternalActionDSL.g:92:9: 'for'
             {
-            match("false"); 
+            match("for"); 
 
 
             }
@@ -1872,10 +1882,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:93:7: ( 'true' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:93:9: 'true'
+            // InternalActionDSL.g:93:7: ( 'while' )
+            // InternalActionDSL.g:93:9: 'while'
             {
-            match("true"); 
+            match("while"); 
 
 
             }
@@ -1893,10 +1903,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:94:7: ( 'null' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:94:9: 'null'
+            // InternalActionDSL.g:94:7: ( 'do' )
+            // InternalActionDSL.g:94:9: 'do'
             {
-            match("null"); 
+            match("do"); 
 
 
             }
@@ -1914,10 +1924,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:95:7: ( 'typeof' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:95:9: 'typeof'
+            // InternalActionDSL.g:95:7: ( 'var' )
+            // InternalActionDSL.g:95:9: 'var'
             {
-            match("typeof"); 
+            match("var"); 
 
 
             }
@@ -1935,10 +1945,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:96:7: ( 'throw' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:96:9: 'throw'
+            // InternalActionDSL.g:96:7: ( 'val' )
+            // InternalActionDSL.g:96:9: 'val'
             {
-            match("throw"); 
+            match("val"); 
 
 
             }
@@ -1956,10 +1966,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:97:7: ( 'return' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:97:9: 'return'
+            // InternalActionDSL.g:97:7: ( 'extends' )
+            // InternalActionDSL.g:97:9: 'extends'
             {
-            match("return"); 
+            match("extends"); 
 
 
             }
@@ -1977,10 +1987,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:98:8: ( 'try' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:98:10: 'try'
+            // InternalActionDSL.g:98:8: ( 'super' )
+            // InternalActionDSL.g:98:10: 'super'
             {
-            match("try"); 
+            match("super"); 
 
 
             }
@@ -1998,10 +2008,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:99:8: ( 'finally' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:99:10: 'finally'
+            // InternalActionDSL.g:99:8: ( 'new' )
+            // InternalActionDSL.g:99:10: 'new'
             {
-            match("finally"); 
+            match("new"); 
 
 
             }
@@ -2019,10 +2029,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:100:8: ( 'synchronized' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:100:10: 'synchronized'
+            // InternalActionDSL.g:100:8: ( 'false' )
+            // InternalActionDSL.g:100:10: 'false'
             {
-            match("synchronized"); 
+            match("false"); 
 
 
             }
@@ -2040,10 +2050,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:101:8: ( 'catch' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:101:10: 'catch'
+            // InternalActionDSL.g:101:8: ( 'true' )
+            // InternalActionDSL.g:101:10: 'true'
             {
-            match("catch"); 
+            match("true"); 
 
 
             }
@@ -2061,10 +2071,11 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:102:8: ( '?' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:102:10: '?'
+            // InternalActionDSL.g:102:8: ( 'null' )
+            // InternalActionDSL.g:102:10: 'null'
             {
-            match('?'); 
+            match("null"); 
+
 
             }
 
@@ -2081,10 +2092,11 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:103:8: ( '&' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:103:10: '&'
+            // InternalActionDSL.g:103:8: ( 'typeof' )
+            // InternalActionDSL.g:103:10: 'typeof'
             {
-            match('&'); 
+            match("typeof"); 
+
 
             }
 
@@ -2101,10 +2113,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:104:8: ( 'Claim' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:104:10: 'Claim'
+            // InternalActionDSL.g:104:8: ( 'throw' )
+            // InternalActionDSL.g:104:10: 'throw'
             {
-            match("Claim"); 
+            match("throw"); 
 
 
             }
@@ -2122,10 +2134,10 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:105:8: ( 'Start' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:105:10: 'Start'
+            // InternalActionDSL.g:105:8: ( 'return' )
+            // InternalActionDSL.g:105:10: 'return'
             {
-            match("Start"); 
+            match("return"); 
 
 
             }
@@ -2143,10 +2155,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:106:8: ( 'Stop' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:106:10: 'Stop'
+            // InternalActionDSL.g:106:8: ( 'try' )
+            // InternalActionDSL.g:106:10: 'try'
             {
-            match("Stop"); 
+            match("try"); 
 
 
             }
@@ -2164,10 +2176,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:107:8: ( 'Release' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:107:10: 'Release'
+            // InternalActionDSL.g:107:8: ( 'finally' )
+            // InternalActionDSL.g:107:10: 'finally'
             {
-            match("Release"); 
+            match("finally"); 
 
 
             }
@@ -2185,10 +2197,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:108:8: ( 'Suspend' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:108:10: 'Suspend'
+            // InternalActionDSL.g:108:8: ( 'synchronized' )
+            // InternalActionDSL.g:108:10: 'synchronized'
             {
-            match("Suspend"); 
+            match("synchronized"); 
 
 
             }
@@ -2206,10 +2218,10 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:109:8: ( 'Resume' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:109:10: 'Resume'
+            // InternalActionDSL.g:109:8: ( 'catch' )
+            // InternalActionDSL.g:109:10: 'catch'
             {
-            match("Resume"); 
+            match("catch"); 
 
 
             }
@@ -2227,11 +2239,10 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:110:8: ( 'Skip' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:110:10: 'Skip'
+            // InternalActionDSL.g:110:8: ( '?' )
+            // InternalActionDSL.g:110:10: '?'
             {
-            match("Skip"); 
-
+            match('?'); 
 
             }
 
@@ -2248,11 +2259,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:111:8: ( 'Complete' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:111:10: 'Complete'
+            // InternalActionDSL.g:111:8: ( '&' )
+            // InternalActionDSL.g:111:10: '&'
             {
-            match("Complete"); 
-
+            match('&'); 
 
             }
 
@@ -2269,10 +2279,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:112:8: ( 'Delegate' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:112:10: 'Delegate'
+            // InternalActionDSL.g:112:8: ( 'Claim' )
+            // InternalActionDSL.g:112:10: 'Claim'
             {
-            match("Delegate"); 
+            match("Claim"); 
 
 
             }
@@ -2290,10 +2300,10 @@
         try {
             int _type = T__115;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:113:8: ( 'Forward' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:113:10: 'Forward'
+            // InternalActionDSL.g:113:8: ( 'Start' )
+            // InternalActionDSL.g:113:10: 'Start'
             {
-            match("Forward"); 
+            match("Start"); 
 
 
             }
@@ -2311,10 +2321,10 @@
         try {
             int _type = T__116;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:114:8: ( 'Fail' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:114:10: 'Fail'
+            // InternalActionDSL.g:114:8: ( 'Stop' )
+            // InternalActionDSL.g:114:10: 'Stop'
             {
-            match("Fail"); 
+            match("Stop"); 
 
 
             }
@@ -2332,10 +2342,10 @@
         try {
             int _type = T__117;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:115:8: ( 'Register' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:115:10: 'Register'
+            // InternalActionDSL.g:115:8: ( 'Release' )
+            // InternalActionDSL.g:115:10: 'Release'
             {
-            match("Register"); 
+            match("Release"); 
 
 
             }
@@ -2353,10 +2363,10 @@
         try {
             int _type = T__118;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:116:8: ( 'Remove' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:116:10: 'Remove'
+            // InternalActionDSL.g:116:8: ( 'Suspend' )
+            // InternalActionDSL.g:116:10: 'Suspend'
             {
-            match("Remove"); 
+            match("Suspend"); 
 
 
             }
@@ -2374,10 +2384,10 @@
         try {
             int _type = T__119;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:117:8: ( 'Activate' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:117:10: 'Activate'
+            // InternalActionDSL.g:117:8: ( 'Resume' )
+            // InternalActionDSL.g:117:10: 'Resume'
             {
-            match("Activate"); 
+            match("Resume"); 
 
 
             }
@@ -2395,10 +2405,10 @@
         try {
             int _type = T__120;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:118:8: ( 'Exit' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:118:10: 'Exit'
+            // InternalActionDSL.g:118:8: ( 'Skip' )
+            // InternalActionDSL.g:118:10: 'Skip'
             {
-            match("Exit"); 
+            match("Skip"); 
 
 
             }
@@ -2416,10 +2426,10 @@
         try {
             int _type = T__121;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:119:8: ( 'RemoveAll' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:119:10: 'RemoveAll'
+            // InternalActionDSL.g:119:8: ( 'Complete' )
+            // InternalActionDSL.g:119:10: 'Complete'
             {
-            match("RemoveAll"); 
+            match("Complete"); 
 
 
             }
@@ -2437,10 +2447,10 @@
         try {
             int _type = T__122;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:120:8: ( 'AddAll' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:120:10: 'AddAll'
+            // InternalActionDSL.g:120:8: ( 'Delegate' )
+            // InternalActionDSL.g:120:10: 'Delegate'
             {
-            match("AddAll"); 
+            match("Delegate"); 
 
 
             }
@@ -2458,10 +2468,10 @@
         try {
             int _type = T__123;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:121:8: ( 'New' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:121:10: 'New'
+            // InternalActionDSL.g:121:8: ( 'Forward' )
+            // InternalActionDSL.g:121:10: 'Forward'
             {
-            match("New"); 
+            match("Forward"); 
 
 
             }
@@ -2479,10 +2489,10 @@
         try {
             int _type = T__124;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:122:8: ( 'Save' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:122:10: 'Save'
+            // InternalActionDSL.g:122:8: ( 'Fail' )
+            // InternalActionDSL.g:122:10: 'Fail'
             {
-            match("Save"); 
+            match("Fail"); 
 
 
             }
@@ -2500,10 +2510,10 @@
         try {
             int _type = T__125;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:123:8: ( 'Delete' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:123:10: 'Delete'
+            // InternalActionDSL.g:123:8: ( 'Register' )
+            // InternalActionDSL.g:123:10: 'Register'
             {
-            match("Delete"); 
+            match("Register"); 
 
 
             }
@@ -2521,10 +2531,10 @@
         try {
             int _type = T__126;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:124:8: ( 'Cancel' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:124:10: 'Cancel'
+            // InternalActionDSL.g:124:8: ( 'Remove' )
+            // InternalActionDSL.g:124:10: 'Remove'
             {
-            match("Cancel"); 
+            match("Remove"); 
 
 
             }
@@ -2542,10 +2552,10 @@
         try {
             int _type = T__127;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:125:8: ( 'PrintOnServer' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:125:10: 'PrintOnServer'
+            // InternalActionDSL.g:125:8: ( 'Activate' )
+            // InternalActionDSL.g:125:10: 'Activate'
             {
-            match("PrintOnServer"); 
+            match("Activate"); 
 
 
             }
@@ -2563,10 +2573,10 @@
         try {
             int _type = T__128;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:126:8: ( 'Download' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:126:10: 'Download'
+            // InternalActionDSL.g:126:8: ( 'Exit' )
+            // InternalActionDSL.g:126:10: 'Exit'
             {
-            match("Download"); 
+            match("Exit"); 
 
 
             }
@@ -2584,10 +2594,10 @@
         try {
             int _type = T__129;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:127:8: ( 'Import' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:127:10: 'Import'
+            // InternalActionDSL.g:127:8: ( 'RemoveAll' )
+            // InternalActionDSL.g:127:10: 'RemoveAll'
             {
-            match("Import"); 
+            match("RemoveAll"); 
 
 
             }
@@ -2605,10 +2615,10 @@
         try {
             int _type = T__130;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:128:8: ( 'Export' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:128:10: 'Export'
+            // InternalActionDSL.g:128:8: ( 'AddAll' )
+            // InternalActionDSL.g:128:10: 'AddAll'
             {
-            match("Export"); 
+            match("AddAll"); 
 
 
             }
@@ -2621,15 +2631,225 @@
     }
     // $ANTLR end "T__130"
 
+    // $ANTLR start "T__131"
+    public final void mT__131() throws RecognitionException {
+        try {
+            int _type = T__131;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:129:8: ( 'New' )
+            // InternalActionDSL.g:129:10: 'New'
+            {
+            match("New"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:130:8: ( 'Save' )
+            // InternalActionDSL.g:130:10: 'Save'
+            {
+            match("Save"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:131:8: ( 'Delete' )
+            // InternalActionDSL.g:131:10: 'Delete'
+            {
+            match("Delete"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__133"
+
+    // $ANTLR start "T__134"
+    public final void mT__134() throws RecognitionException {
+        try {
+            int _type = T__134;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:132:8: ( 'Cancel' )
+            // InternalActionDSL.g:132:10: 'Cancel'
+            {
+            match("Cancel"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__134"
+
+    // $ANTLR start "T__135"
+    public final void mT__135() throws RecognitionException {
+        try {
+            int _type = T__135;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:133:8: ( 'PrintOnServer' )
+            // InternalActionDSL.g:133:10: 'PrintOnServer'
+            {
+            match("PrintOnServer"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:134:8: ( 'Download' )
+            // InternalActionDSL.g:134:10: 'Download'
+            {
+            match("Download"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__136"
+
+    // $ANTLR start "T__137"
+    public final void mT__137() throws RecognitionException {
+        try {
+            int _type = T__137;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:135:8: ( 'Import' )
+            // InternalActionDSL.g:135:10: 'Import'
+            {
+            match("Import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__137"
+
+    // $ANTLR start "T__138"
+    public final void mT__138() throws RecognitionException {
+        try {
+            int _type = T__138;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:136:8: ( 'Export' )
+            // InternalActionDSL.g:136:10: 'Export'
+            {
+            match("Export"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__138"
+
+    // $ANTLR start "T__139"
+    public final void mT__139() throws RecognitionException {
+        try {
+            int _type = T__139;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:137:8: ( 'NextPart' )
+            // InternalActionDSL.g:137:10: 'NextPart'
+            {
+            match("NextPart"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__139"
+
+    // $ANTLR start "T__140"
+    public final void mT__140() throws RecognitionException {
+        try {
+            int _type = T__140;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalActionDSL.g:138:8: ( 'PreviousPart' )
+            // InternalActionDSL.g:138:10: 'PreviousPart'
+            {
+            match("PreviousPart"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__140"
+
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalActionDSL.g:8520:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalActionDSL.g:8520:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:12: ( '0x' | '0X' )
+            // InternalActionDSL.g:8520:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2657,7 +2877,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:13: '0x'
+                    // InternalActionDSL.g:8520:13: '0x'
                     {
                     match("0x"); 
 
@@ -2665,7 +2885,7 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:18: '0X'
+                    // InternalActionDSL.g:8520:18: '0X'
                     {
                     match("0X"); 
 
@@ -2675,7 +2895,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalActionDSL.g:8520:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2689,7 +2909,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:
+            	    // InternalActionDSL.g:
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='f') ) {
             	        input.consume();
@@ -2713,7 +2933,7 @@
                 cnt2++;
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalActionDSL.g:8520:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2722,10 +2942,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalActionDSL.g:8520:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalActionDSL.g:8520:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2743,7 +2963,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalActionDSL.g:8520:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2767,7 +2987,7 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7754:84: ( 'l' | 'L' )
+                            // InternalActionDSL.g:8520:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2806,11 +3026,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7756:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7756:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalActionDSL.g:8522:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalActionDSL.g:8522:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7756:21: ( '0' .. '9' | '_' )*
+            // InternalActionDSL.g:8522:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2823,7 +3043,7 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:
+            	    // InternalActionDSL.g:
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
             	        input.consume();
@@ -2859,11 +3079,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7758:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7758:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalActionDSL.g:8524:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalActionDSL.g:8524:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7758:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalActionDSL.g:8524:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2872,7 +3092,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7758:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalActionDSL.g:8524:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2883,7 +3103,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7758:36: ( '+' | '-' )?
+                    // InternalActionDSL.g:8524:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2892,7 +3112,7 @@
                     }
                     switch (alt6) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:
+                            // InternalActionDSL.g:
                             {
                             if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                                 input.consume();
@@ -2916,7 +3136,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7758:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalActionDSL.g:8524:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2928,7 +3148,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7758:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalActionDSL.g:8524:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2952,7 +3172,7 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7758:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalActionDSL.g:8524:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
                     {
                     if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
                         input.consume();
@@ -2985,10 +3205,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7760:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7760:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalActionDSL.g:8526:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalActionDSL.g:8526:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7760:11: ( '^' )?
+            // InternalActionDSL.g:8526:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2997,7 +3217,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7760:11: '^'
+                    // InternalActionDSL.g:8526:11: '^'
                     {
                     match('^'); 
 
@@ -3015,7 +3235,7 @@
                 recover(mse);
                 throw mse;}
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7760:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalActionDSL.g:8526:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -3028,7 +3248,7 @@
 
                 switch (alt10) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:
+            	    // InternalActionDSL.g:
             	    {
             	    if ( input.LA(1)=='$'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
             	        input.consume();
@@ -3064,10 +3284,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalActionDSL.g:8528:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalActionDSL.g:8528:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalActionDSL.g:8528:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -3085,10 +3305,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalActionDSL.g:8528:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalActionDSL.g:8528:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -3104,7 +3324,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:21: '\\\\' .
+                    	    // InternalActionDSL.g:8528:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3112,7 +3332,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalActionDSL.g:8528:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3132,7 +3352,7 @@
                         }
                     } while (true);
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:44: ( '\"' )?
+                    // InternalActionDSL.g:8528:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -3141,7 +3361,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:44: '\"'
+                            // InternalActionDSL.g:8528:44: '\"'
                             {
                             match('\"'); 
 
@@ -3154,10 +3374,10 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalActionDSL.g:8528:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalActionDSL.g:8528:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -3173,7 +3393,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:55: '\\\\' .
+                    	    // InternalActionDSL.g:8528:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3181,7 +3401,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalActionDSL.g:8528:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3201,7 +3421,7 @@
                         }
                     } while (true);
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:79: ( '\\'' )?
+                    // InternalActionDSL.g:8528:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -3210,7 +3430,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7762:79: '\\''
+                            // InternalActionDSL.g:8528:79: '\\''
                             {
                             match('\''); 
 
@@ -3241,12 +3461,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7764:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7764:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalActionDSL.g:8530:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalActionDSL.g:8530:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7764:24: ( options {greedy=false; } : . )*
+            // InternalActionDSL.g:8530:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -3271,7 +3491,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7764:52: .
+            	    // InternalActionDSL.g:8530:52: .
             	    {
             	    matchAny(); 
 
@@ -3301,12 +3521,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7766:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7766:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalActionDSL.g:8532:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalActionDSL.g:8532:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7766:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalActionDSL.g:8532:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -3319,7 +3539,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7766:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalActionDSL.g:8532: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();
@@ -3339,7 +3559,7 @@
                 }
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7766:40: ( ( '\\r' )? '\\n' )?
+            // InternalActionDSL.g:8532:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -3348,9 +3568,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7766:41: ( '\\r' )? '\\n'
+                    // InternalActionDSL.g:8532:41: ( '\\r' )? '\\n'
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7766:41: ( '\\r' )?
+                    // InternalActionDSL.g:8532:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3359,7 +3579,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7766:41: '\\r'
+                            // InternalActionDSL.g:8532:41: '\\r'
                             {
                             match('\r'); 
 
@@ -3391,10 +3611,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7768:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7768:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalActionDSL.g:8534:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalActionDSL.g:8534:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7768:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalActionDSL.g:8534:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3408,7 +3628,7 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:
+            	    // InternalActionDSL.g:
             	    {
             	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
             	        input.consume();
@@ -3448,8 +3668,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7770:16: ( . )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:7770:18: .
+            // InternalActionDSL.g:8536:16: ( . )
+            // InternalActionDSL.g:8536:18: .
             {
             matchAny(); 
 
@@ -3464,894 +3684,964 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.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 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=127;
+        // InternalActionDSL.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 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=137;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:10: T__13
+                // InternalActionDSL.g:1:10: T__13
                 {
                 mT__13(); 
 
                 }
                 break;
             case 2 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:16: T__14
+                // InternalActionDSL.g:1:16: T__14
                 {
                 mT__14(); 
 
                 }
                 break;
             case 3 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:22: T__15
+                // InternalActionDSL.g:1:22: T__15
                 {
                 mT__15(); 
 
                 }
                 break;
             case 4 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:28: T__16
+                // InternalActionDSL.g:1:28: T__16
                 {
                 mT__16(); 
 
                 }
                 break;
             case 5 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:34: T__17
+                // InternalActionDSL.g:1:34: T__17
                 {
                 mT__17(); 
 
                 }
                 break;
             case 6 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:40: T__18
+                // InternalActionDSL.g:1:40: T__18
                 {
                 mT__18(); 
 
                 }
                 break;
             case 7 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:46: T__19
+                // InternalActionDSL.g:1:46: T__19
                 {
                 mT__19(); 
 
                 }
                 break;
             case 8 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:52: T__20
+                // InternalActionDSL.g:1:52: T__20
                 {
                 mT__20(); 
 
                 }
                 break;
             case 9 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:58: T__21
+                // InternalActionDSL.g:1:58: T__21
                 {
                 mT__21(); 
 
                 }
                 break;
             case 10 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:64: T__22
+                // InternalActionDSL.g:1:64: T__22
                 {
                 mT__22(); 
 
                 }
                 break;
             case 11 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:70: T__23
+                // InternalActionDSL.g:1:70: T__23
                 {
                 mT__23(); 
 
                 }
                 break;
             case 12 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:76: T__24
+                // InternalActionDSL.g:1:76: T__24
                 {
                 mT__24(); 
 
                 }
                 break;
             case 13 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:82: T__25
+                // InternalActionDSL.g:1:82: T__25
                 {
                 mT__25(); 
 
                 }
                 break;
             case 14 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:88: T__26
+                // InternalActionDSL.g:1:88: T__26
                 {
                 mT__26(); 
 
                 }
                 break;
             case 15 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:94: T__27
+                // InternalActionDSL.g:1:94: T__27
                 {
                 mT__27(); 
 
                 }
                 break;
             case 16 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:100: T__28
+                // InternalActionDSL.g:1:100: T__28
                 {
                 mT__28(); 
 
                 }
                 break;
             case 17 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:106: T__29
+                // InternalActionDSL.g:1:106: T__29
                 {
                 mT__29(); 
 
                 }
                 break;
             case 18 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:112: T__30
+                // InternalActionDSL.g:1:112: T__30
                 {
                 mT__30(); 
 
                 }
                 break;
             case 19 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:118: T__31
+                // InternalActionDSL.g:1:118: T__31
                 {
                 mT__31(); 
 
                 }
                 break;
             case 20 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:124: T__32
+                // InternalActionDSL.g:1:124: T__32
                 {
                 mT__32(); 
 
                 }
                 break;
             case 21 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:130: T__33
+                // InternalActionDSL.g:1:130: T__33
                 {
                 mT__33(); 
 
                 }
                 break;
             case 22 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:136: T__34
+                // InternalActionDSL.g:1:136: T__34
                 {
                 mT__34(); 
 
                 }
                 break;
             case 23 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:142: T__35
+                // InternalActionDSL.g:1:142: T__35
                 {
                 mT__35(); 
 
                 }
                 break;
             case 24 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:148: T__36
+                // InternalActionDSL.g:1:148: T__36
                 {
                 mT__36(); 
 
                 }
                 break;
             case 25 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:154: T__37
+                // InternalActionDSL.g:1:154: T__37
                 {
                 mT__37(); 
 
                 }
                 break;
             case 26 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:160: T__38
+                // InternalActionDSL.g:1:160: T__38
                 {
                 mT__38(); 
 
                 }
                 break;
             case 27 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:166: T__39
+                // InternalActionDSL.g:1:166: T__39
                 {
                 mT__39(); 
 
                 }
                 break;
             case 28 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:172: T__40
+                // InternalActionDSL.g:1:172: T__40
                 {
                 mT__40(); 
 
                 }
                 break;
             case 29 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:178: T__41
+                // InternalActionDSL.g:1:178: T__41
                 {
                 mT__41(); 
 
                 }
                 break;
             case 30 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:184: T__42
+                // InternalActionDSL.g:1:184: T__42
                 {
                 mT__42(); 
 
                 }
                 break;
             case 31 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:190: T__43
+                // InternalActionDSL.g:1:190: T__43
                 {
                 mT__43(); 
 
                 }
                 break;
             case 32 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:196: T__44
+                // InternalActionDSL.g:1:196: T__44
                 {
                 mT__44(); 
 
                 }
                 break;
             case 33 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:202: T__45
+                // InternalActionDSL.g:1:202: T__45
                 {
                 mT__45(); 
 
                 }
                 break;
             case 34 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:208: T__46
+                // InternalActionDSL.g:1:208: T__46
                 {
                 mT__46(); 
 
                 }
                 break;
             case 35 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:214: T__47
+                // InternalActionDSL.g:1:214: T__47
                 {
                 mT__47(); 
 
                 }
                 break;
             case 36 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:220: T__48
+                // InternalActionDSL.g:1:220: T__48
                 {
                 mT__48(); 
 
                 }
                 break;
             case 37 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:226: T__49
+                // InternalActionDSL.g:1:226: T__49
                 {
                 mT__49(); 
 
                 }
                 break;
             case 38 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:232: T__50
+                // InternalActionDSL.g:1:232: T__50
                 {
                 mT__50(); 
 
                 }
                 break;
             case 39 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:238: T__51
+                // InternalActionDSL.g:1:238: T__51
                 {
                 mT__51(); 
 
                 }
                 break;
             case 40 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:244: T__52
+                // InternalActionDSL.g:1:244: T__52
                 {
                 mT__52(); 
 
                 }
                 break;
             case 41 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:250: T__53
+                // InternalActionDSL.g:1:250: T__53
                 {
                 mT__53(); 
 
                 }
                 break;
             case 42 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:256: T__54
+                // InternalActionDSL.g:1:256: T__54
                 {
                 mT__54(); 
 
                 }
                 break;
             case 43 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:262: T__55
+                // InternalActionDSL.g:1:262: T__55
                 {
                 mT__55(); 
 
                 }
                 break;
             case 44 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:268: T__56
+                // InternalActionDSL.g:1:268: T__56
                 {
                 mT__56(); 
 
                 }
                 break;
             case 45 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:274: T__57
+                // InternalActionDSL.g:1:274: T__57
                 {
                 mT__57(); 
 
                 }
                 break;
             case 46 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:280: T__58
+                // InternalActionDSL.g:1:280: T__58
                 {
                 mT__58(); 
 
                 }
                 break;
             case 47 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:286: T__59
+                // InternalActionDSL.g:1:286: T__59
                 {
                 mT__59(); 
 
                 }
                 break;
             case 48 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:292: T__60
+                // InternalActionDSL.g:1:292: T__60
                 {
                 mT__60(); 
 
                 }
                 break;
             case 49 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:298: T__61
+                // InternalActionDSL.g:1:298: T__61
                 {
                 mT__61(); 
 
                 }
                 break;
             case 50 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:304: T__62
+                // InternalActionDSL.g:1:304: T__62
                 {
                 mT__62(); 
 
                 }
                 break;
             case 51 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:310: T__63
+                // InternalActionDSL.g:1:310: T__63
                 {
                 mT__63(); 
 
                 }
                 break;
             case 52 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:316: T__64
+                // InternalActionDSL.g:1:316: T__64
                 {
                 mT__64(); 
 
                 }
                 break;
             case 53 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:322: T__65
+                // InternalActionDSL.g:1:322: T__65
                 {
                 mT__65(); 
 
                 }
                 break;
             case 54 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:328: T__66
+                // InternalActionDSL.g:1:328: T__66
                 {
                 mT__66(); 
 
                 }
                 break;
             case 55 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:334: T__67
+                // InternalActionDSL.g:1:334: T__67
                 {
                 mT__67(); 
 
                 }
                 break;
             case 56 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:340: T__68
+                // InternalActionDSL.g:1:340: T__68
                 {
                 mT__68(); 
 
                 }
                 break;
             case 57 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:346: T__69
+                // InternalActionDSL.g:1:346: T__69
                 {
                 mT__69(); 
 
                 }
                 break;
             case 58 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:352: T__70
+                // InternalActionDSL.g:1:352: T__70
                 {
                 mT__70(); 
 
                 }
                 break;
             case 59 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:358: T__71
+                // InternalActionDSL.g:1:358: T__71
                 {
                 mT__71(); 
 
                 }
                 break;
             case 60 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:364: T__72
+                // InternalActionDSL.g:1:364: T__72
                 {
                 mT__72(); 
 
                 }
                 break;
             case 61 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:370: T__73
+                // InternalActionDSL.g:1:370: T__73
                 {
                 mT__73(); 
 
                 }
                 break;
             case 62 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:376: T__74
+                // InternalActionDSL.g:1:376: T__74
                 {
                 mT__74(); 
 
                 }
                 break;
             case 63 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:382: T__75
+                // InternalActionDSL.g:1:382: T__75
                 {
                 mT__75(); 
 
                 }
                 break;
             case 64 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:388: T__76
+                // InternalActionDSL.g:1:388: T__76
                 {
                 mT__76(); 
 
                 }
                 break;
             case 65 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:394: T__77
+                // InternalActionDSL.g:1:394: T__77
                 {
                 mT__77(); 
 
                 }
                 break;
             case 66 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:400: T__78
+                // InternalActionDSL.g:1:400: T__78
                 {
                 mT__78(); 
 
                 }
                 break;
             case 67 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:406: T__79
+                // InternalActionDSL.g:1:406: T__79
                 {
                 mT__79(); 
 
                 }
                 break;
             case 68 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:412: T__80
+                // InternalActionDSL.g:1:412: T__80
                 {
                 mT__80(); 
 
                 }
                 break;
             case 69 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:418: T__81
+                // InternalActionDSL.g:1:418: T__81
                 {
                 mT__81(); 
 
                 }
                 break;
             case 70 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:424: T__82
+                // InternalActionDSL.g:1:424: T__82
                 {
                 mT__82(); 
 
                 }
                 break;
             case 71 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:430: T__83
+                // InternalActionDSL.g:1:430: T__83
                 {
                 mT__83(); 
 
                 }
                 break;
             case 72 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:436: T__84
+                // InternalActionDSL.g:1:436: T__84
                 {
                 mT__84(); 
 
                 }
                 break;
             case 73 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:442: T__85
+                // InternalActionDSL.g:1:442: T__85
                 {
                 mT__85(); 
 
                 }
                 break;
             case 74 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:448: T__86
+                // InternalActionDSL.g:1:448: T__86
                 {
                 mT__86(); 
 
                 }
                 break;
             case 75 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:454: T__87
+                // InternalActionDSL.g:1:454: T__87
                 {
                 mT__87(); 
 
                 }
                 break;
             case 76 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:460: T__88
+                // InternalActionDSL.g:1:460: T__88
                 {
                 mT__88(); 
 
                 }
                 break;
             case 77 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:466: T__89
+                // InternalActionDSL.g:1:466: T__89
                 {
                 mT__89(); 
 
                 }
                 break;
             case 78 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:472: T__90
+                // InternalActionDSL.g:1:472: T__90
                 {
                 mT__90(); 
 
                 }
                 break;
             case 79 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:478: T__91
+                // InternalActionDSL.g:1:478: T__91
                 {
                 mT__91(); 
 
                 }
                 break;
             case 80 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:484: T__92
+                // InternalActionDSL.g:1:484: T__92
                 {
                 mT__92(); 
 
                 }
                 break;
             case 81 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:490: T__93
+                // InternalActionDSL.g:1:490: T__93
                 {
                 mT__93(); 
 
                 }
                 break;
             case 82 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:496: T__94
+                // InternalActionDSL.g:1:496: T__94
                 {
                 mT__94(); 
 
                 }
                 break;
             case 83 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:502: T__95
+                // InternalActionDSL.g:1:502: T__95
                 {
                 mT__95(); 
 
                 }
                 break;
             case 84 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:508: T__96
+                // InternalActionDSL.g:1:508: T__96
                 {
                 mT__96(); 
 
                 }
                 break;
             case 85 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:514: T__97
+                // InternalActionDSL.g:1:514: T__97
                 {
                 mT__97(); 
 
                 }
                 break;
             case 86 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:520: T__98
+                // InternalActionDSL.g:1:520: T__98
                 {
                 mT__98(); 
 
                 }
                 break;
             case 87 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:526: T__99
+                // InternalActionDSL.g:1:526: T__99
                 {
                 mT__99(); 
 
                 }
                 break;
             case 88 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:532: T__100
+                // InternalActionDSL.g:1:532: T__100
                 {
                 mT__100(); 
 
                 }
                 break;
             case 89 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:539: T__101
+                // InternalActionDSL.g:1:539: T__101
                 {
                 mT__101(); 
 
                 }
                 break;
             case 90 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:546: T__102
+                // InternalActionDSL.g:1:546: T__102
                 {
                 mT__102(); 
 
                 }
                 break;
             case 91 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:553: T__103
+                // InternalActionDSL.g:1:553: T__103
                 {
                 mT__103(); 
 
                 }
                 break;
             case 92 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:560: T__104
+                // InternalActionDSL.g:1:560: T__104
                 {
                 mT__104(); 
 
                 }
                 break;
             case 93 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:567: T__105
+                // InternalActionDSL.g:1:567: T__105
                 {
                 mT__105(); 
 
                 }
                 break;
             case 94 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:574: T__106
+                // InternalActionDSL.g:1:574: T__106
                 {
                 mT__106(); 
 
                 }
                 break;
             case 95 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:581: T__107
+                // InternalActionDSL.g:1:581: T__107
                 {
                 mT__107(); 
 
                 }
                 break;
             case 96 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:588: T__108
+                // InternalActionDSL.g:1:588: T__108
                 {
                 mT__108(); 
 
                 }
                 break;
             case 97 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:595: T__109
+                // InternalActionDSL.g:1:595: T__109
                 {
                 mT__109(); 
 
                 }
                 break;
             case 98 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:602: T__110
+                // InternalActionDSL.g:1:602: T__110
                 {
                 mT__110(); 
 
                 }
                 break;
             case 99 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:609: T__111
+                // InternalActionDSL.g:1:609: T__111
                 {
                 mT__111(); 
 
                 }
                 break;
             case 100 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:616: T__112
+                // InternalActionDSL.g:1:616: T__112
                 {
                 mT__112(); 
 
                 }
                 break;
             case 101 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:623: T__113
+                // InternalActionDSL.g:1:623: T__113
                 {
                 mT__113(); 
 
                 }
                 break;
             case 102 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:630: T__114
+                // InternalActionDSL.g:1:630: T__114
                 {
                 mT__114(); 
 
                 }
                 break;
             case 103 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:637: T__115
+                // InternalActionDSL.g:1:637: T__115
                 {
                 mT__115(); 
 
                 }
                 break;
             case 104 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:644: T__116
+                // InternalActionDSL.g:1:644: T__116
                 {
                 mT__116(); 
 
                 }
                 break;
             case 105 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:651: T__117
+                // InternalActionDSL.g:1:651: T__117
                 {
                 mT__117(); 
 
                 }
                 break;
             case 106 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:658: T__118
+                // InternalActionDSL.g:1:658: T__118
                 {
                 mT__118(); 
 
                 }
                 break;
             case 107 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:665: T__119
+                // InternalActionDSL.g:1:665: T__119
                 {
                 mT__119(); 
 
                 }
                 break;
             case 108 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:672: T__120
+                // InternalActionDSL.g:1:672: T__120
                 {
                 mT__120(); 
 
                 }
                 break;
             case 109 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:679: T__121
+                // InternalActionDSL.g:1:679: T__121
                 {
                 mT__121(); 
 
                 }
                 break;
             case 110 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:686: T__122
+                // InternalActionDSL.g:1:686: T__122
                 {
                 mT__122(); 
 
                 }
                 break;
             case 111 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:693: T__123
+                // InternalActionDSL.g:1:693: T__123
                 {
                 mT__123(); 
 
                 }
                 break;
             case 112 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:700: T__124
+                // InternalActionDSL.g:1:700: T__124
                 {
                 mT__124(); 
 
                 }
                 break;
             case 113 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:707: T__125
+                // InternalActionDSL.g:1:707: T__125
                 {
                 mT__125(); 
 
                 }
                 break;
             case 114 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:714: T__126
+                // InternalActionDSL.g:1:714: T__126
                 {
                 mT__126(); 
 
                 }
                 break;
             case 115 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:721: T__127
+                // InternalActionDSL.g:1:721: T__127
                 {
                 mT__127(); 
 
                 }
                 break;
             case 116 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:728: T__128
+                // InternalActionDSL.g:1:728: T__128
                 {
                 mT__128(); 
 
                 }
                 break;
             case 117 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:735: T__129
+                // InternalActionDSL.g:1:735: T__129
                 {
                 mT__129(); 
 
                 }
                 break;
             case 118 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:742: T__130
+                // InternalActionDSL.g:1:742: T__130
                 {
                 mT__130(); 
 
                 }
                 break;
             case 119 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:749: RULE_HEX
+                // InternalActionDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // InternalActionDSL.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // InternalActionDSL.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // InternalActionDSL.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // InternalActionDSL.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // InternalActionDSL.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // InternalActionDSL.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // InternalActionDSL.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // InternalActionDSL.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // InternalActionDSL.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // InternalActionDSL.g:1:819: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 120 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:758: RULE_INT
+            case 130 :
+                // InternalActionDSL.g:1:828: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 121 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:767: RULE_DECIMAL
+            case 131 :
+                // InternalActionDSL.g:1:837: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 122 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:780: RULE_ID
+            case 132 :
+                // InternalActionDSL.g:1:850: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 123 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:788: RULE_STRING
+            case 133 :
+                // InternalActionDSL.g:1:858: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 124 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:800: RULE_ML_COMMENT
+            case 134 :
+                // InternalActionDSL.g:1:870: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 125 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:816: RULE_SL_COMMENT
+            case 135 :
+                // InternalActionDSL.g:1:886: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 126 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:832: RULE_WS
+            case 136 :
+                // InternalActionDSL.g:1:902: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 127 :
-                // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1:840: RULE_ANY_OTHER
+            case 137 :
+                // InternalActionDSL.g:1:910: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -4365,354 +4655,192 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\73\2\uffff\12\73\1\134\1\137\4\uffff\1\146\3\uffff\1"+
-        "\154\1\160\1\164\1\166\1\170\1\172\1\174\1\176\1\u0080\1\u0083\1"+
-        "\73\1\u0086\1\uffff\15\73\2\u00a2\1\71\5\uffff\1\73\3\uffff\10\73"+
-        "\1\u00b1\4\73\1\u00b6\17\73\1\u00cb\10\uffff\1\u00cd\32\uffff\1"+
-        "\u00cf\4\uffff\1\u00d0\3\uffff\30\73\1\uffff\1\u00a2\4\uffff\4\73"+
-        "\1\u00f3\6\73\1\uffff\4\73\1\uffff\23\73\7\uffff\1\u0111\2\73\1"+
-        "\u0114\1\u0115\1\u0116\25\73\1\u012c\5\73\1\u0132\1\uffff\6\73\1"+
-        "\u013a\1\u013b\5\73\1\u0141\4\73\1\u0146\12\73\1\uffff\2\73\3\uffff"+
-        "\1\u0153\4\73\1\u0158\1\73\1\u015a\1\u015b\7\73\1\u0164\2\73\1\u0167"+
-        "\1\73\1\uffff\5\73\1\uffff\1\73\1\u016f\4\73\1\u0174\2\uffff\2\73"+
-        "\1\u0177\2\73\1\uffff\1\u017a\3\73\1\uffff\4\73\1\u0183\4\73\1\u0188"+
-        "\1\u0189\1\73\1\uffff\1\u018b\2\73\1\u018e\1\uffff\1\73\2\uffff"+
-        "\10\73\1\uffff\2\73\1\uffff\6\73\1\u01a0\1\uffff\4\73\1\uffff\1"+
-        "\u01a5\1\73\1\uffff\2\73\1\uffff\6\73\1\u01af\1\u01b0\1\uffff\2"+
-        "\73\1\u01b3\1\73\2\uffff\1\73\1\uffff\1\73\1\u01b7\1\uffff\2\73"+
-        "\1\u01ba\1\73\1\u01bd\1\73\1\u01bf\3\73\1\u01c3\1\u01c4\1\73\1\u01c6"+
-        "\1\u01c7\1\u01c8\1\73\1\uffff\1\73\1\u01cb\2\73\1\uffff\5\73\1\u01d3"+
-        "\1\73\1\u01d5\1\73\2\uffff\2\73\1\uffff\1\73\1\u01da\1\73\1\uffff"+
-        "\1\u01dc\1\u01dd\1\uffff\2\73\1\uffff\1\73\1\uffff\1\73\1\u01e2"+
-        "\1\73\2\uffff\1\73\3\uffff\2\73\1\uffff\7\73\1\uffff\1\73\1\uffff"+
-        "\4\73\1\uffff\1\u01f3\2\uffff\1\u01f4\1\73\1\u01f6\1\u01f7\1\uffff"+
-        "\1\u01f8\12\73\1\u0203\4\73\2\uffff\1\u0208\3\uffff\1\73\1\u020a"+
-        "\1\uffff\2\73\1\u020d\1\73\1\u020f\2\73\1\uffff\4\73\1\uffff\1\73"+
-        "\1\uffff\2\73\1\uffff\1\73\1\uffff\1\u021a\6\73\1\u0221\2\73\1\uffff"+
-        "\2\73\1\u0226\1\u0227\2\73\1\uffff\1\73\1\u022b\2\73\2\uffff\1\73"+
-        "\1\u022f\1\73\1\uffff\2\73\1\u0233\1\uffff\3\73\1\uffff\1\73\1\u0238"+
-        "\2\73\1\uffff\6\73\1\u0241\1\u0242\2\uffff";
+        "\1\uffff\1\76\2\uffff\16\76\1\147\1\76\5\uffff\1\162\3\uffff\1\170\1\174\1\u0080\1\u0082\1\u0084\1\u0086\1\u0088\1\u008a\1\u008c\1\u008e\1\u0091\1\76\1\u0094\13\76\2\u00aa\1\74\5\uffff\1\76\3\uffff\6\76\1\u00b8\12\76\1\u00c4\22\76\3\uffff\1\u00da\2\76\5\uffff\1\u00de\32\uffff\1\u00e0\1\uffff\1\u00e2\4\uffff\1\u00e3\2\uffff\23\76\1\uffff\1\u00aa\4\uffff\12\76\1\uffff\4\76\1\u010d\6\76\1\uffff\13\76\1\u011f\11\76\1\uffff\1\u012a\1\76\7\uffff\1\u012c\1\u012d\24\76\1\u0142\10\76\1\u014b\10\76\1\u0154\1\uffff\2\76\1\u0158\1\u0159\15\76\1\uffff\5\76\1\u016c\4\76\1\uffff\1\u0171\2\uffff\4\76\1\u0176\1\76\1\u0178\1\u0179\7\76\1\u0182\2\76\1\u0185\1\76\1\uffff\10\76\1\uffff\1\u018f\7\76\1\uffff\1\76\1\u0198\1\u0199\2\uffff\5\76\1\u019f\4\76\1\u01a4\2\76\1\u01a7\1\76\1\u01a9\2\76\1\uffff\4\76\1\uffff\1\u01b1\2\76\1\u01b4\1\uffff\1\76\2\uffff\10\76\1\uffff\2\76\1\uffff\11\76\1\uffff\7\76\1\u01d0\2\uffff\1\u01d1\2\76\1\u01d4\1\u01d5\1\uffff\2\76\1\u01d8\1\76\1\uffff\2\76\1\uffff\1\76\1\uffff\7\76\1\uffff\1\76\1\u01e5\1\uffff\2\76\1\u01e8\1\76\1\u01eb\1\76\1\u01ed\3\76\1\u01f1\1\u01f2\3\76\1\u01f6\1\u01f7\1\u01f8\3\76\1\u01fc\3\76\1\u0200\1\76\2\uffff\2\76\2\uffff\2\76\1\uffff\3\76\1\u0209\2\76\1\u020d\5\76\1\uffff\1\u0213\1\u0214\1\uffff\2\76\1\uffff\1\76\1\uffff\1\76\1\u0219\1\76\2\uffff\3\76\3\uffff\3\76\1\uffff\3\76\1\uffff\10\76\1\uffff\3\76\1\uffff\4\76\1\u0233\2\uffff\1\u0234\1\76\1\u0236\1\u0237\1\uffff\1\u0238\1\u0239\22\76\1\u024c\4\76\2\uffff\1\u0251\4\uffff\3\76\1\u0255\3\76\1\u0259\1\u025a\1\u025b\10\76\1\uffff\4\76\1\uffff\2\76\1\u026a\1\uffff\1\u026b\2\76\3\uffff\16\76\2\uffff\1\u027c\2\76\1\u027f\1\u0280\4\76\1\u0285\5\76\1\u028b\1\uffff\2\76\2\uffff\4\76\1\uffff\1\76\1\u0293\2\76\1\u0296\1\uffff\2\76\1\u0299\4\76\1\uffff\2\76\1\uffff\2\76\1\uffff\3\76\1\u02a5\5\76\1\u02ab\1\u02ac\1\uffff\1\u02ad\1\u02ae\3\76\4\uffff\5\76\1\u02b7\1\76\1\u02b9\1\uffff\1\u02ba\2\uffff";
     static final String DFA21_eofS =
-        "\u0243\uffff";
+        "\u02bb\uffff";
     static final String DFA21_minS =
-        "\1\0\1\141\2\uffff\2\141\1\143\1\145\1\141\1\154\3\145\1\150\1"+
-        "\56\1\52\4\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174"+
-        "\1\46\1\75\1\56\1\163\1\72\1\uffff\2\141\1\145\2\141\2\145\1\141"+
-        "\1\143\1\170\1\145\1\162\1\155\2\60\1\44\5\uffff\1\143\3\uffff\1"+
-        "\157\1\163\1\165\1\160\1\162\1\146\1\141\1\164\1\44\1\145\1\157"+
-        "\1\160\1\163\1\44\1\157\2\156\1\141\1\145\2\163\1\154\1\151\1\141"+
-        "\1\160\1\156\1\160\1\162\1\151\1\74\10\uffff\1\75\32\uffff\1\75"+
-        "\4\uffff\1\44\3\uffff\1\162\1\154\1\156\1\154\1\167\1\154\1\141"+
-        "\1\155\1\156\1\141\1\163\1\151\1\166\1\147\1\154\1\167\1\162\1\151"+
-        "\1\164\1\144\1\151\1\167\1\151\1\160\1\uffff\1\60\4\uffff\1\153"+
-        "\1\154\1\153\1\145\1\44\1\145\1\157\1\143\1\141\1\154\1\141\1\uffff"+
-        "\1\155\1\156\1\157\1\164\1\uffff\1\165\1\145\1\105\1\145\1\143\1"+
-        "\162\1\143\2\145\1\163\1\145\2\164\1\145\1\143\1\157\1\165\1\153"+
-        "\1\154\7\uffff\1\44\1\163\1\141\3\44\1\154\1\151\1\160\1\143\1\162"+
-        "\3\160\2\145\1\165\1\151\1\157\1\145\1\156\1\167\1\154\1\151\1\101"+
-        "\1\164\1\157\1\44\1\156\1\157\1\141\1\142\1\101\1\44\1\uffff\1\157"+
-        "\1\167\1\162\1\165\1\157\1\151\2\44\1\162\1\141\1\160\1\162\1\170"+
-        "\1\44\1\150\1\164\1\165\1\156\1\44\1\141\2\143\1\151\1\162\1\150"+
-        "\2\162\1\146\1\145\1\uffff\1\145\1\154\3\uffff\1\44\1\155\1\154"+
-        "\1\145\1\164\1\44\1\145\2\44\1\141\1\155\1\163\1\166\1\147\1\154"+
-        "\1\141\1\44\1\166\1\154\1\44\1\162\1\uffff\1\164\1\162\1\147\1\141"+
-        "\1\143\1\uffff\1\146\1\44\1\151\1\154\1\147\1\156\1\44\2\uffff\1"+
-        "\164\1\156\1\44\1\151\1\145\1\uffff\1\44\1\101\1\164\1\144\1\uffff"+
-        "\1\147\1\164\1\150\1\143\1\44\1\162\1\164\1\156\1\154\2\44\1\154"+
-        "\1\uffff\1\44\1\145\1\154\1\44\1\uffff\1\156\2\uffff\1\163\1\145"+
-        "\1\164\1\145\1\141\1\145\1\157\1\162\1\uffff\1\141\1\154\1\uffff"+
-        "\1\164\1\117\1\164\1\145\1\162\1\164\1\44\1\uffff\1\142\1\164\1"+
-        "\101\1\164\1\uffff\1\44\1\143\1\uffff\2\143\1\uffff\1\143\1\145"+
-        "\1\163\1\151\1\145\1\127\2\44\1\uffff\1\157\1\101\1\44\1\157\2\uffff"+
-        "\1\171\1\uffff\1\164\1\44\1\uffff\1\144\1\145\1\44\1\145\1\44\1"+
-        "\164\1\44\1\141\1\144\1\164\2\44\1\156\3\44\1\151\1\uffff\1\145"+
-        "\1\44\1\143\1\145\1\uffff\1\145\1\101\1\165\1\164\1\120\1\44\1\157"+
-        "\1\44\1\157\2\uffff\1\156\1\143\1\uffff\1\167\1\44\1\145\1\uffff"+
-        "\2\44\1\uffff\1\162\1\154\1\uffff\1\145\1\uffff\1\144\1\44\1\145"+
-        "\2\uffff\1\123\3\uffff\1\157\1\144\1\uffff\1\164\1\162\1\157\1\143"+
-        "\1\164\1\151\1\141\1\uffff\1\156\1\uffff\1\162\1\151\1\164\1\101"+
-        "\1\uffff\1\44\2\uffff\1\44\1\154\2\44\1\uffff\1\44\1\145\1\156\1"+
-        "\40\1\151\1\143\1\146\1\164\1\145\1\157\1\162\1\44\1\153\1\172\1"+
-        "\151\1\143\2\uffff\1\44\3\uffff\1\162\1\44\1\uffff\1\157\1\150\1"+
-        "\44\1\151\1\44\1\156\1\141\1\uffff\1\154\1\145\1\157\1\164\1\uffff"+
-        "\1\166\1\uffff\1\156\1\141\1\uffff\1\157\1\uffff\1\44\1\155\1\157"+
-        "\1\144\1\156\1\151\1\145\1\44\2\156\1\uffff\1\145\1\141\2\44\1\157"+
-        "\1\162\1\uffff\1\147\1\44\1\164\1\144\2\uffff\1\156\1\44\1\145\1"+
-        "\uffff\1\145\1\101\1\44\1\uffff\1\101\1\162\1\143\1\uffff\1\143"+
-        "\1\44\2\164\1\uffff\2\151\2\157\2\156\2\44\2\uffff";
+        "\1\0\1\141\2\uffff\2\141\1\145\1\141\1\143\2\145\1\150\1\163\1\141\1\162\1\154\1\145\1\156\1\52\1\145\5\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\163\1\72\3\141\2\145\1\141\1\143\1\170\1\145\1\162\1\155\2\60\1\44\5\uffff\1\143\3\uffff\1\155\1\141\1\156\1\146\1\141\1\164\1\44\1\171\1\157\1\163\1\165\1\160\1\162\1\145\1\157\1\160\1\163\1\44\1\154\1\141\1\151\1\160\1\156\1\160\1\162\1\151\1\145\1\156\1\162\1\154\1\156\1\157\1\145\2\163\1\106\3\uffff\1\44\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\44\2\uffff\1\154\1\141\1\155\1\156\1\141\1\163\1\151\1\166\1\147\1\154\1\167\1\162\1\151\1\164\1\144\1\151\1\167\1\145\1\160\1\uffff\1\60\4\uffff\1\153\1\155\1\162\1\105\1\145\2\143\1\141\1\154\1\141\1\uffff\1\102\1\154\1\153\1\145\1\44\1\145\1\157\1\155\1\156\1\157\1\164\1\uffff\1\145\2\164\1\145\1\143\1\157\1\165\1\153\1\154\1\162\1\143\1\44\1\163\1\141\1\165\1\143\2\145\1\163\1\141\1\164\1\uffff\1\44\1\154\7\uffff\2\44\1\151\1\160\1\143\1\162\3\160\2\145\1\165\1\151\1\157\1\145\1\156\1\167\1\154\1\151\1\101\1\164\1\157\1\44\1\164\1\156\1\166\1\157\2\141\1\164\1\170\1\44\1\150\1\162\1\165\1\157\2\151\1\142\1\101\1\44\1\uffff\1\157\1\167\2\44\1\162\1\141\1\143\1\151\1\143\1\162\1\150\2\162\1\146\1\145\1\151\1\164\1\uffff\1\145\1\154\1\160\1\165\1\156\1\44\1\141\1\151\1\143\1\141\1\uffff\1\44\2\uffff\1\155\1\154\1\145\1\164\1\44\1\145\2\44\1\141\1\155\1\163\1\166\1\147\1\154\1\141\1\44\1\166\1\154\1\44\1\162\1\uffff\1\120\1\164\1\151\1\162\1\147\1\156\1\101\1\145\1\uffff\1\44\1\151\1\154\1\147\2\156\1\141\1\143\1\uffff\1\146\2\44\2\uffff\1\164\1\156\1\164\1\143\1\150\1\44\1\162\1\164\1\156\1\154\1\44\1\156\1\151\1\44\1\154\1\44\1\164\1\144\1\uffff\1\147\1\154\1\143\1\162\1\uffff\1\44\1\145\1\154\1\44\1\uffff\1\156\2\uffff\1\163\1\145\1\164\1\145\1\141\1\145\1\157\1\162\1\uffff\1\141\1\154\1\uffff\1\164\1\141\1\117\1\157\1\164\1\145\1\144\2\143\1\uffff\1\142\1\164\1\101\1\164\1\144\1\162\1\164\1\44\2\uffff\1\44\1\143\1\127\2\44\1\uffff\1\157\1\101\1\44\1\157\1\uffff\1\164\1\157\1\uffff\1\171\1\uffff\1\145\1\151\1\163\1\145\1\115\1\145\1\164\1\uffff\1\164\1\44\1\uffff\1\144\1\145\1\44\1\145\1\44\1\164\1\44\1\141\1\144\1\164\2\44\1\162\1\156\1\165\3\44\1\164\1\165\1\145\1\44\1\143\1\145\1\151\1\44\1\151\2\uffff\1\145\1\157\2\uffff\1\156\1\143\1\uffff\1\167\1\145\1\156\1\44\1\111\1\157\1\44\1\103\1\145\1\163\2\145\1\uffff\2\44\1\uffff\1\162\1\154\1\uffff\1\145\1\uffff\1\144\1\44\1\145\2\uffff\1\164\1\123\1\163\3\uffff\1\151\1\164\1\144\1\uffff\1\164\1\162\1\156\1\uffff\2\157\1\162\1\151\1\164\1\101\1\162\1\141\1\uffff\1\155\1\141\1\156\1\uffff\1\141\2\163\1\144\1\44\2\uffff\1\44\1\154\2\44\1\uffff\2\44\1\145\1\120\1\157\1\145\1\102\1\151\1\143\1\147\1\156\1\146\1\153\1\172\1\151\1\143\1\146\1\154\1\155\1\164\1\44\1\164\1\163\2\115\2\uffff\1\44\4\uffff\1\162\1\141\1\156\1\44\1\171\1\157\1\150\3\44\1\154\1\145\1\157\1\164\1\141\1\101\2\145\1\uffff\1\145\1\141\2\145\1\uffff\1\166\1\162\1\44\1\uffff\1\44\1\156\1\141\3\uffff\1\157\1\144\1\156\1\151\2\143\1\144\1\162\2\147\2\163\1\145\1\164\2\uffff\1\44\1\156\1\141\2\44\1\157\1\145\1\164\1\151\1\44\1\157\1\145\2\163\1\162\1\44\1\uffff\1\147\1\144\2\uffff\1\156\1\101\1\151\1\141\1\uffff\1\162\1\44\2\141\1\44\1\uffff\1\145\1\101\1\44\1\143\1\157\1\164\1\171\1\uffff\2\147\1\uffff\1\101\1\143\1\uffff\1\164\1\156\1\145\1\44\2\145\1\143\1\164\1\151\2\44\1\uffff\2\44\1\164\1\151\1\157\4\uffff\1\151\1\157\1\156\1\157\1\156\1\44\1\156\1\44\1\uffff\1\44\2\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\141\2\uffff\1\171\1\157\1\164\1\162\1\150\1\170\1\145"+
-        "\1\171\1\145\1\157\1\56\1\75\4\uffff\1\76\3\uffff\1\75\1\76\2\75"+
-        "\1\76\1\75\1\174\1\46\1\75\1\72\1\163\1\72\1\uffff\1\157\1\141\1"+
-        "\165\1\157\1\165\1\145\2\157\1\144\1\170\1\145\1\162\1\155\1\170"+
-        "\1\154\1\172\5\uffff\1\143\3\uffff\1\157\1\163\1\171\1\160\1\162"+
-        "\1\163\1\141\1\164\1\172\1\145\1\157\1\160\1\163\1\172\1\157\1\156"+
-        "\1\164\1\141\1\164\2\163\1\154\1\151\1\141\1\160\1\156\1\164\1\162"+
-        "\1\151\1\74\10\uffff\1\75\32\uffff\1\75\4\uffff\1\172\3\uffff\1"+
-        "\162\1\154\1\156\1\162\1\167\1\154\1\141\1\155\1\156\1\157\1\163"+
-        "\1\151\1\166\1\163\1\154\1\167\1\162\1\151\1\164\1\144\1\160\1\167"+
-        "\1\151\1\160\1\uffff\1\154\4\uffff\1\153\1\154\1\153\1\145\1\172"+
-        "\1\145\1\157\1\143\1\141\1\154\1\141\1\uffff\1\155\1\156\1\157\1"+
-        "\164\1\uffff\1\165\1\145\1\105\1\145\1\143\1\162\1\143\2\145\1\163"+
-        "\1\145\2\164\1\145\1\143\1\157\1\165\1\153\1\154\7\uffff\1\172\1"+
-        "\163\1\141\3\172\1\154\1\151\1\160\1\143\1\162\3\160\2\145\1\165"+
-        "\1\151\1\157\1\145\1\156\1\167\1\154\1\151\1\101\1\164\1\157\1\172"+
-        "\1\156\1\157\1\141\1\142\1\101\1\172\1\uffff\1\157\1\167\1\162\1"+
-        "\165\1\157\1\151\2\172\1\162\1\141\1\160\1\162\1\170\1\172\1\150"+
-        "\1\164\1\165\1\156\1\172\1\141\2\143\1\151\1\162\1\150\2\162\1\146"+
-        "\1\145\1\uffff\1\145\1\154\3\uffff\1\172\1\155\1\154\1\145\1\164"+
-        "\1\172\1\145\2\172\1\141\1\155\1\163\1\166\1\164\1\154\1\141\1\172"+
-        "\1\166\1\154\1\172\1\162\1\uffff\1\164\1\162\1\147\1\141\1\143\1"+
-        "\uffff\1\146\1\172\1\151\1\154\1\147\1\156\1\172\2\uffff\1\164\1"+
-        "\156\1\172\1\151\1\145\1\uffff\1\172\1\101\1\164\1\163\1\uffff\1"+
-        "\147\1\164\1\150\1\143\1\172\1\162\1\164\1\156\1\154\2\172\1\154"+
-        "\1\uffff\1\172\1\145\1\154\1\172\1\uffff\1\156\2\uffff\1\163\1\145"+
-        "\1\164\1\145\1\141\1\145\1\157\1\162\1\uffff\1\141\1\154\1\uffff"+
-        "\1\164\1\117\1\164\1\145\1\162\1\164\1\172\1\uffff\1\142\1\164\1"+
-        "\101\1\164\1\uffff\1\172\1\143\1\uffff\2\143\1\uffff\1\143\1\145"+
-        "\1\163\1\151\1\145\1\127\2\172\1\uffff\1\157\1\101\1\172\1\157\2"+
-        "\uffff\1\171\1\uffff\1\164\1\172\1\uffff\1\144\1\145\1\172\1\145"+
-        "\1\172\1\164\1\172\1\141\1\144\1\164\2\172\1\156\3\172\1\151\1\uffff"+
-        "\1\145\1\172\1\143\1\145\1\uffff\1\145\1\101\1\165\1\164\1\120\1"+
-        "\172\1\157\1\172\1\157\2\uffff\1\156\1\143\1\uffff\1\167\1\172\1"+
-        "\145\1\uffff\2\172\1\uffff\1\162\1\154\1\uffff\1\145\1\uffff\1\144"+
-        "\1\172\1\145\2\uffff\1\123\3\uffff\1\157\1\144\1\uffff\1\164\1\162"+
-        "\1\157\1\143\1\164\1\151\1\141\1\uffff\1\156\1\uffff\1\162\1\151"+
-        "\1\164\1\101\1\uffff\1\172\2\uffff\1\172\1\154\2\172\1\uffff\1\172"+
-        "\1\145\1\156\1\40\1\151\1\143\1\146\1\164\1\145\1\157\1\162\1\172"+
-        "\1\153\1\172\1\151\1\143\2\uffff\1\172\3\uffff\1\162\1\172\1\uffff"+
-        "\1\157\1\150\1\172\1\151\1\172\1\156\1\141\1\uffff\1\154\1\145\1"+
-        "\157\1\164\1\uffff\1\166\1\uffff\1\156\1\141\1\uffff\1\157\1\uffff"+
-        "\1\172\1\155\1\157\1\144\1\156\1\151\1\145\1\172\2\156\1\uffff\1"+
-        "\145\1\141\2\172\1\157\1\162\1\uffff\1\147\1\172\1\164\1\144\2\uffff"+
-        "\1\156\1\172\1\145\1\uffff\1\145\1\101\1\172\1\uffff\1\101\1\162"+
-        "\1\143\1\uffff\1\143\1\172\2\164\1\uffff\2\151\2\157\2\156\2\172"+
-        "\2\uffff";
+        "\1\uffff\1\141\2\uffff\2\157\1\145\1\171\1\164\1\171\1\145\1\157\1\163\1\165\1\162\1\170\1\145\1\156\1\75\1\165\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\1\56\1\72\1\163\1\72\1\141\1\157\1\165\1\145\2\157\1\144\1\170\1\145\1\162\1\155\1\170\1\154\1\172\5\uffff\1\143\3\uffff\1\155\1\141\1\164\1\163\1\141\1\164\1\172\1\171\1\157\1\163\1\171\1\160\1\162\1\145\1\157\1\160\1\163\1\172\1\154\1\141\1\151\1\160\1\156\1\164\1\162\1\151\1\145\1\156\1\162\1\154\1\156\1\157\1\164\2\163\1\123\3\uffff\1\172\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\172\2\uffff\1\162\1\141\1\155\1\156\1\157\1\163\1\151\1\166\1\163\1\154\1\167\1\162\1\151\1\164\1\144\1\160\1\170\1\151\1\160\1\uffff\1\154\4\uffff\1\153\1\155\1\162\1\105\1\145\2\143\1\141\1\154\1\141\1\uffff\1\102\1\154\1\153\1\145\1\172\1\145\1\157\1\155\1\156\1\157\1\164\1\uffff\1\145\2\164\1\145\1\143\1\157\1\165\1\153\1\154\1\162\1\143\1\172\1\163\1\141\1\165\1\143\2\145\1\163\1\141\1\165\1\uffff\1\172\1\154\7\uffff\2\172\1\151\1\160\1\143\1\162\3\160\2\145\1\165\1\151\1\157\1\145\1\156\1\167\1\154\1\151\1\101\1\164\1\157\1\172\1\164\1\156\1\166\1\157\2\141\1\164\1\170\1\172\1\150\1\162\1\165\1\157\2\151\1\142\1\101\1\172\1\uffff\1\157\1\167\2\172\1\162\1\141\1\143\1\151\1\143\1\162\1\150\2\162\1\146\1\145\1\151\1\164\1\uffff\1\145\1\154\1\160\1\165\1\156\1\172\1\141\1\151\1\143\1\141\1\uffff\1\172\2\uffff\1\155\1\154\1\145\1\164\1\172\1\145\2\172\1\141\1\155\1\163\1\166\1\164\1\154\1\141\1\172\1\166\1\154\1\172\1\162\1\uffff\1\120\1\164\1\151\1\162\1\147\1\156\1\101\1\145\1\uffff\1\172\1\151\1\154\1\147\2\156\1\141\1\143\1\uffff\1\146\2\172\2\uffff\1\164\1\156\1\164\1\143\1\150\1\172\1\162\1\164\1\156\1\154\1\172\1\156\1\151\1\172\1\154\1\172\1\164\1\163\1\uffff\1\147\1\154\1\143\1\162\1\uffff\1\172\1\145\1\154\1\172\1\uffff\1\156\2\uffff\1\163\1\145\1\164\1\145\1\141\1\145\1\157\1\162\1\uffff\1\141\1\154\1\uffff\1\164\1\141\1\117\1\157\1\164\1\145\1\144\2\143\1\uffff\1\142\1\164\1\101\1\164\1\144\1\162\1\164\1\172\2\uffff\1\172\1\143\1\127\2\172\1\uffff\1\157\1\101\1\172\1\157\1\uffff\1\164\1\157\1\uffff\1\171\1\uffff\1\145\1\151\1\163\1\145\1\115\1\145\1\164\1\uffff\1\164\1\172\1\uffff\1\144\1\145\1\172\1\145\1\172\1\164\1\172\1\141\1\144\1\164\2\172\1\162\1\156\1\165\3\172\1\164\1\165\1\145\1\172\1\143\1\145\1\151\1\172\1\151\2\uffff\1\145\1\157\2\uffff\1\156\1\143\1\uffff\1\167\1\145\1\156\1\172\1\114\1\157\1\172\1\103\1\145\1\163\2\145\1\uffff\2\172\1\uffff\1\162\1\154\1\uffff\1\145\1\uffff\1\144\1\172\1\145\2\uffff\1\164\1\123\1\163\3\uffff\1\151\1\164\1\144\1\uffff\1\164\1\162\1\156\1\uffff\2\157\1\162\1\151\1\164\1\101\1\162\1\141\1\uffff\1\155\1\141\1\156\1\uffff\1\141\2\163\1\144\1\172\2\uffff\1\172\1\154\2\172\1\uffff\2\172\1\145\1\120\1\157\1\145\1\102\1\151\1\143\1\147\1\156\1\146\1\153\1\172\1\151\1\143\1\146\1\154\1\155\1\164\1\172\1\164\1\163\2\115\2\uffff\1\172\4\uffff\1\162\1\141\1\156\1\172\1\171\1\157\1\150\3\172\1\154\1\145\1\157\1\164\1\141\1\101\2\145\1\uffff\1\145\1\141\2\145\1\uffff\1\166\1\162\1\172\1\uffff\1\172\1\156\1\141\3\uffff\1\157\1\144\1\156\1\151\2\143\1\144\1\162\2\147\2\163\1\145\1\164\2\uffff\1\172\1\156\1\141\2\172\1\157\1\145\1\164\1\151\1\172\1\157\1\145\2\163\1\162\1\172\1\uffff\1\147\1\144\2\uffff\1\156\1\101\1\151\1\141\1\uffff\1\162\1\172\2\141\1\172\1\uffff\1\145\1\101\1\172\1\143\1\157\1\164\1\171\1\uffff\2\147\1\uffff\1\101\1\143\1\uffff\1\164\1\156\1\145\1\172\2\145\1\143\1\164\1\151\2\172\1\uffff\2\172\1\164\1\151\1\157\4\uffff\1\151\1\157\1\156\1\157\1\156\1\172\1\156\1\172\1\uffff\1\172\2\uffff";
     static final String DFA21_acceptS =
-        "\2\uffff\1\2\1\3\14\uffff\1\30\1\31\1\32\1\33\1\uffff\1\35\1\36"+
-        "\1\37\14\uffff\1\101\20\uffff\1\172\2\173\1\176\1\177\1\uffff\1"+
-        "\172\1\2\1\3\36\uffff\1\26\1\42\1\67\1\27\1\30\1\31\1\32\1\33\1"+
-        "\uffff\1\62\1\34\1\35\1\36\1\37\1\40\1\74\1\65\1\41\1\57\1\75\1"+
-        "\66\1\43\1\174\1\175\1\70\1\44\1\71\1\63\1\45\1\47\1\46\1\50\1\100"+
-        "\1\51\1\135\1\uffff\1\72\1\64\1\77\1\134\1\uffff\1\76\1\105\1\101"+
-        "\30\uffff\1\167\1\uffff\1\170\1\171\1\173\1\176\13\uffff\1\112\4"+
-        "\uffff\1\102\23\uffff\1\60\1\61\1\54\1\52\1\55\1\53\1\73\42\uffff"+
-        "\1\130\35\uffff\1\110\2\uffff\1\113\1\114\1\121\25\uffff\1\157\5"+
-        "\uffff\1\123\7\uffff\1\7\1\10\5\uffff\1\107\4\uffff\1\103\14\uffff"+
-        "\1\124\4\uffff\1\140\1\uffff\1\144\1\160\10\uffff\1\150\2\uffff"+
-        "\1\154\7\uffff\1\126\4\uffff\1\6\2\uffff\1\11\2\uffff\1\133\10\uffff"+
-        "\1\120\4\uffff\1\111\1\122\1\uffff\1\136\2\uffff\1\137\21\uffff"+
-        "\1\125\4\uffff\1\25\11\uffff\1\104\1\116\2\uffff\1\127\3\uffff\1"+
-        "\162\2\uffff\1\143\2\uffff\1\152\1\uffff\1\161\3\uffff\1\156\1\166"+
-        "\1\uffff\1\165\1\1\1\4\2\uffff\1\106\7\uffff\1\115\1\uffff\1\14"+
-        "\4\uffff\1\131\1\uffff\1\142\1\141\4\uffff\1\147\20\uffff\1\145"+
-        "\1\151\1\uffff\1\146\1\164\1\153\2\uffff\1\5\7\uffff\1\117\4\uffff"+
-        "\1\155\1\uffff\1\15\2\uffff\1\56\1\uffff\1\12\12\uffff\1\21\6\uffff"+
-        "\1\17\4\uffff\1\132\1\20\3\uffff\1\24\3\uffff\1\163\3\uffff\1\22"+
-        "\4\uffff\1\13\10\uffff\1\16\1\23";
+        "\2\uffff\1\2\1\3\20\uffff\1\41\1\42\1\43\1\44\1\45\1\uffff\1\47\1\50\1\51\33\uffff\1\u0084\2\u0085\1\u0088\1\u0089\1\uffff\1\u0084\1\2\1\3\44\uffff\1\54\1\101\1\37\3\uffff\1\41\1\42\1\43\1\44\1\45\1\uffff\1\74\1\46\1\47\1\50\1\51\1\52\1\106\1\77\1\53\1\71\1\107\1\100\1\55\1\u0086\1\u0087\1\102\1\56\1\103\1\75\1\57\1\61\1\60\1\62\1\113\1\63\1\145\1\uffff\1\104\1\uffff\1\110\1\76\1\112\1\144\1\uffff\1\111\1\117\23\uffff\1\u0081\1\uffff\1\u0082\1\u0083\1\u0085\1\u0088\12\uffff\1\124\13\uffff\1\114\25\uffff\1\40\2\uffff\1\66\1\64\1\67\1\65\1\72\1\73\1\105\51\uffff\1\140\21\uffff\1\122\12\uffff\1\131\1\uffff\1\125\1\126\24\uffff\1\167\10\uffff\1\121\10\uffff\1\133\3\uffff\1\11\1\12\22\uffff\1\115\4\uffff\1\134\4\uffff\1\150\1\uffff\1\154\1\170\10\uffff\1\160\2\uffff\1\164\11\uffff\1\143\10\uffff\1\136\1\10\5\uffff\1\130\4\uffff\1\123\2\uffff\1\132\1\uffff\1\24\7\uffff\1\146\2\uffff\1\147\33\uffff\1\135\1\34\2\uffff\1\35\1\116\2\uffff\1\137\14\uffff\1\172\2\uffff\1\153\2\uffff\1\162\1\uffff\1\171\3\uffff\1\166\1\176\3\uffff\1\175\1\1\1\4\3\uffff\1\120\3\uffff\1\7\10\uffff\1\141\3\uffff\1\127\5\uffff\1\152\1\151\4\uffff\1\157\31\uffff\1\155\1\161\1\uffff\1\156\1\174\1\163\1\177\22\uffff\1\36\4\uffff\1\165\3\uffff\1\25\3\uffff\1\6\1\13\1\70\16\uffff\1\17\1\5\20\uffff\1\15\2\uffff\1\142\1\16\4\uffff\1\32\5\uffff\1\u0080\7\uffff\1\30\2\uffff\1\173\2\uffff\1\20\13\uffff\1\27\5\uffff\1\23\1\26\1\31\1\33\10\uffff\1\22\1\uffff\1\14\1\21";
     static final String DFA21_specialS =
-        "\1\0\u0242\uffff}>";
+        "\1\0\u02ba\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\71\2\70\2\71\1\70\22\71\1\70\1\40\1\66\1\25\1\65\1\33\1"+
-            "\37\1\67\1\21\1\23\1\17\1\30\1\22\1\31\1\16\1\32\1\62\11\63"+
-            "\1\43\1\44\1\34\1\24\1\35\1\41\1\20\1\55\1\65\1\50\1\53\1\56"+
-            "\1\54\2\65\1\61\4\65\1\57\1\65\1\60\1\65\1\52\1\51\7\65\1\26"+
-            "\1\71\1\27\1\64\1\65\1\71\1\42\1\65\1\10\1\5\1\11\1\45\1\7\1"+
-            "\65\1\6\3\65\1\12\1\47\1\65\1\1\1\65\1\14\1\13\1\4\1\65\1\46"+
-            "\1\15\3\65\1\2\1\36\1\3\uff82\71",
-            "\1\72",
+            "\11\74\2\73\2\74\1\73\22\74\1\73\1\45\1\71\1\32\1\70\1\40\1\44\1\72\1\26\1\30\1\22\1\35\1\27\1\36\1\46\1\37\1\65\11\66\1\51\1\24\1\41\1\31\1\42\1\47\1\25\1\60\1\70\1\53\1\56\1\61\1\57\2\70\1\64\4\70\1\62\1\70\1\63\1\70\1\55\1\54\7\70\1\33\1\74\1\34\1\67\1\70\1\74\1\50\1\70\1\4\1\5\1\17\1\15\1\16\1\70\1\10\1\70\1\6\1\70\1\20\1\23\1\21\1\1\1\70\1\12\1\11\1\7\1\14\1\52\1\13\3\70\1\2\1\43\1\3\uff82\74",
+            "\1\75",
             "",
             "",
-            "\1\77\6\uffff\1\102\6\uffff\1\76\2\uffff\1\100\6\uffff\1\101",
-            "\1\105\3\uffff\1\103\3\uffff\1\104\5\uffff\1\106",
-            "\1\110\2\uffff\1\113\6\uffff\1\111\1\112\5\uffff\1\107",
-            "\1\115\14\uffff\1\114",
-            "\1\116\6\uffff\1\117",
-            "\1\121\13\uffff\1\120",
-            "\1\122",
-            "\1\123\16\uffff\1\125\1\126\1\uffff\1\124\1\uffff\1\127",
+            "\1\103\6\uffff\1\102\6\uffff\1\101",
+            "\1\106\3\uffff\1\104\3\uffff\1\105\5\uffff\1\107",
+            "\1\110",
+            "\1\112\6\uffff\1\115\6\uffff\1\111\2\uffff\1\113\6\uffff\1\114",
+            "\1\117\2\uffff\1\122\6\uffff\1\120\1\121\5\uffff\1\116",
+            "\1\123\16\uffff\1\124\1\126\1\uffff\1\125\1\uffff\1\127",
             "\1\130",
             "\1\132\6\uffff\1\131",
             "\1\133",
-            "\1\136\22\uffff\1\135",
+            "\1\136\7\uffff\1\137\5\uffff\1\135\5\uffff\1\134",
+            "\1\140",
+            "\1\142\13\uffff\1\141",
+            "\1\143",
+            "\1\144",
+            "\1\146\22\uffff\1\145",
+            "\1\151\15\uffff\1\150\1\uffff\1\152",
             "",
             "",
             "",
             "",
-            "\1\144\1\145",
+            "",
+            "\1\160\1\161",
             "",
             "",
             "",
-            "\1\153\21\uffff\1\152",
-            "\1\157\17\uffff\1\155\1\156",
-            "\1\162\4\uffff\1\163\15\uffff\1\161",
-            "\1\165",
-            "\1\167",
-            "\1\171",
-            "\1\173",
-            "\1\175",
-            "\1\177",
-            "\1\u0082\13\uffff\1\u0081",
-            "\1\u0084",
+            "\1\167\21\uffff\1\166",
+            "\1\173\17\uffff\1\171\1\172",
+            "\1\176\4\uffff\1\177\15\uffff\1\175",
+            "\1\u0081",
+            "\1\u0083",
             "\1\u0085",
-            "",
-            "\1\u0089\7\uffff\1\u008a\5\uffff\1\u0088",
+            "\1\u0087",
+            "\1\u0089",
             "\1\u008b",
-            "\1\u008c\17\uffff\1\u008d",
-            "\1\u0090\12\uffff\1\u008e\2\uffff\1\u008f",
-            "\1\u0094\11\uffff\1\u0093\10\uffff\1\u0091\1\u0092",
+            "\1\u008d",
+            "\1\u0090\13\uffff\1\u008f",
+            "\1\u0092",
+            "\1\u0093",
             "\1\u0095",
-            "\1\u0096\11\uffff\1\u0097",
-            "\1\u0099\15\uffff\1\u0098",
-            "\1\u009a\1\u009b",
-            "\1\u009c",
+            "\1\u0098\12\uffff\1\u0096\2\uffff\1\u0097",
+            "\1\u009c\11\uffff\1\u009b\10\uffff\1\u0099\1\u009a",
             "\1\u009d",
-            "\1\u009e",
-            "\1\u009f",
-            "\12\u00a1\10\uffff\1\u00a3\1\uffff\3\u00a3\5\uffff\1\u00a3"+
-            "\13\uffff\1\u00a0\6\uffff\1\u00a1\2\uffff\1\u00a3\1\uffff\3"+
-            "\u00a3\5\uffff\1\u00a3\13\uffff\1\u00a0",
-            "\12\u00a1\10\uffff\1\u00a3\1\uffff\3\u00a3\5\uffff\1\u00a3"+
-            "\22\uffff\1\u00a1\2\uffff\1\u00a3\1\uffff\3\u00a3\5\uffff\1"+
-            "\u00a3",
-            "\1\73\34\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u009e\11\uffff\1\u009f",
+            "\1\u00a1\15\uffff\1\u00a0",
+            "\1\u00a2\1\u00a3",
+            "\1\u00a4",
+            "\1\u00a5",
             "\1\u00a6",
-            "",
-            "",
-            "",
             "\1\u00a7",
-            "\1\u00a8",
-            "\1\u00a9\3\uffff\1\u00aa",
-            "\1\u00ab",
-            "\1\u00ac",
-            "\1\u00ae\14\uffff\1\u00ad",
+            "\12\u00a9\10\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab\13\uffff\1\u00a8\6\uffff\1\u00a9\2\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab\13\uffff\1\u00a8",
+            "\12\u00a9\10\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab\22\uffff\1\u00a9\2\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab",
+            "\1\76\34\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ae",
+            "",
+            "",
+            "",
             "\1\u00af",
             "\1\u00b0",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u00b2",
-            "\1\u00b3",
-            "\1\u00b4",
-            "\1\u00b5",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u00b1\4\uffff\1\u00b2\1\u00b3",
+            "\1\u00b5\14\uffff\1\u00b4",
+            "\1\u00b6",
             "\1\u00b7",
-            "\1\u00b8",
-            "\1\u00b9\4\uffff\1\u00ba\1\u00bb",
-            "\1\u00bc",
-            "\1\u00bd\16\uffff\1\u00be",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc\3\uffff\1\u00bd",
+            "\1\u00be",
             "\1\u00bf",
             "\1\u00c0",
             "\1\u00c1",
             "\1\u00c2",
             "\1\u00c3",
-            "\1\u00c4",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u00c5",
-            "\1\u00c6\3\uffff\1\u00c7",
+            "\1\u00c6",
+            "\1\u00c7",
             "\1\u00c8",
             "\1\u00c9",
-            "\1\u00ca",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u00ca\3\uffff\1\u00cb",
             "\1\u00cc",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u00cd",
             "\1\u00ce",
-            "",
-            "",
-            "",
-            "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "",
-            "",
-            "",
+            "\1\u00cf",
+            "\1\u00d0",
             "\1\u00d1",
             "\1\u00d2",
             "\1\u00d3",
-            "\1\u00d5\5\uffff\1\u00d4",
+            "\1\u00d4\16\uffff\1\u00d5",
             "\1\u00d6",
             "\1\u00d7",
-            "\1\u00d8",
-            "\1\u00d9",
-            "\1\u00da",
-            "\1\u00db\15\uffff\1\u00dc",
+            "\1\u00d8\14\uffff\1\u00d9",
+            "",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00db",
+            "\1\u00dc",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00dd",
-            "\1\u00de",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00df",
-            "\1\u00e2\4\uffff\1\u00e0\1\u00e3\5\uffff\1\u00e1",
-            "\1\u00e4",
-            "\1\u00e5",
+            "",
+            "\1\u00e1",
+            "",
+            "",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u00e5\5\uffff\1\u00e4",
             "\1\u00e6",
             "\1\u00e7",
             "\1\u00e8",
-            "\1\u00e9",
-            "\1\u00ea\6\uffff\1\u00eb",
+            "\1\u00e9\15\uffff\1\u00ea",
+            "\1\u00eb",
             "\1\u00ec",
             "\1\u00ed",
-            "\1\u00ee",
-            "",
-            "\12\u00a1\10\uffff\1\u00a3\1\uffff\3\u00a3\5\uffff\1\u00a3"+
-            "\22\uffff\1\u00a1\2\uffff\1\u00a3\1\uffff\3\u00a3\5\uffff\1"+
-            "\u00a3",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00ef",
-            "\1\u00f0",
-            "\1\u00f1",
+            "\1\u00f0\4\uffff\1\u00ee\1\u00f1\5\uffff\1\u00ef",
             "\1\u00f2",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u00f3",
             "\1\u00f4",
             "\1\u00f5",
             "\1\u00f6",
             "\1\u00f7",
-            "\1\u00f8",
-            "\1\u00f9",
-            "",
-            "\1\u00fa",
-            "\1\u00fb",
-            "\1\u00fc",
-            "\1\u00fd",
-            "",
+            "\1\u00f8\6\uffff\1\u00f9",
+            "\1\u00fa\1\u00fb",
+            "\1\u00fd\3\uffff\1\u00fc",
             "\1\u00fe",
+            "",
+            "\12\u00a9\10\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab\22\uffff\1\u00a9\2\uffff\1\u00ab\1\uffff\3\u00ab\5\uffff\1\u00ab",
+            "",
+            "",
+            "",
+            "",
             "\1\u00ff",
             "\1\u0100",
             "\1\u0101",
@@ -4723,31 +4851,22 @@
             "\1\u0106",
             "\1\u0107",
             "\1\u0108",
+            "",
             "\1\u0109",
             "\1\u010a",
             "\1\u010b",
             "\1\u010c",
-            "\1\u010d",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u010e",
             "\1\u010f",
             "\1\u0110",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u0111",
             "\1\u0112",
             "\1\u0113",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
             "\1\u0117",
             "\1\u0118",
             "\1\u0119",
@@ -4756,7 +4875,7 @@
             "\1\u011c",
             "\1\u011d",
             "\1\u011e",
-            "\1\u011f",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u0120",
             "\1\u0121",
             "\1\u0122",
@@ -4765,143 +4884,122 @@
             "\1\u0125",
             "\1\u0126",
             "\1\u0127",
-            "\1\u0128",
-            "\1\u0129",
-            "\1\u012a",
+            "\1\u0129\1\u0128",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u012b",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u012d",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u012e",
             "\1\u012f",
             "\1\u0130",
             "\1\u0131",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "",
+            "\1\u0132",
             "\1\u0133",
             "\1\u0134",
             "\1\u0135",
             "\1\u0136",
             "\1\u0137",
             "\1\u0138",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22"+
-            "\73\1\u0139\7\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
             "\1\u013c",
             "\1\u013d",
             "\1\u013e",
             "\1\u013f",
             "\1\u0140",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u0142",
+            "\1\u0141",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u0143",
             "\1\u0144",
             "\1\u0145",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u0146",
             "\1\u0147",
             "\1\u0148",
             "\1\u0149",
             "\1\u014a",
-            "\1\u014b",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u014c",
             "\1\u014d",
             "\1\u014e",
             "\1\u014f",
             "\1\u0150",
-            "",
             "\1\u0151",
             "\1\u0152",
+            "\1\u0153",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "",
-            "",
-            "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u0154",
             "\1\u0155",
             "\1\u0156",
-            "\1\u0157",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u0159",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\22\76\1\u0157\7\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u015a",
+            "\1\u015b",
             "\1\u015c",
             "\1\u015d",
             "\1\u015e",
             "\1\u015f",
-            "\1\u0160\14\uffff\1\u0161",
+            "\1\u0160",
+            "\1\u0161",
             "\1\u0162",
             "\1\u0163",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u0164",
             "\1\u0165",
             "\1\u0166",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u0168",
             "",
+            "\1\u0167",
+            "\1\u0168",
             "\1\u0169",
             "\1\u016a",
             "\1\u016b",
-            "\1\u016c",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u016d",
-            "",
             "\1\u016e",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u016f",
             "\1\u0170",
-            "\1\u0171",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
             "\1\u0172",
             "\1\u0173",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "",
-            "",
+            "\1\u0174",
             "\1\u0175",
-            "\1\u0176",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u0178",
-            "\1\u0179",
-            "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0177",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u017a",
             "\1\u017b",
             "\1\u017c",
-            "\1\u017d\16\uffff\1\u017e",
-            "",
-            "\1\u017f",
+            "\1\u017d",
+            "\1\u017e\14\uffff\1\u017f",
             "\1\u0180",
             "\1\u0181",
-            "\1\u0182",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0183",
             "\1\u0184",
-            "\1\u0185",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u0186",
-            "\1\u0187",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u018a",
             "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
             "\1\u018c",
             "\1\u018d",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u018e",
             "",
-            "\1\u018f",
-            "",
-            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u0190",
             "\1\u0191",
             "\1\u0192",
@@ -4909,269 +5007,363 @@
             "\1\u0194",
             "\1\u0195",
             "\1\u0196",
-            "\1\u0197",
             "",
-            "\1\u0198",
-            "\1\u0199",
+            "\1\u0197",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
             "",
             "\1\u019a",
             "\1\u019b",
             "\1\u019c",
             "\1\u019d",
             "\1\u019e",
-            "\1\u019f",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01a0",
             "\1\u01a1",
             "\1\u01a2",
             "\1\u01a3",
-            "\1\u01a4",
-            "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01a5",
             "\1\u01a6",
-            "",
-            "\1\u01a7",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01a8",
-            "",
-            "\1\u01a9",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01aa",
-            "\1\u01ab",
-            "\1\u01ac",
+            "\1\u01ac\16\uffff\1\u01ab",
+            "",
             "\1\u01ad",
             "\1\u01ae",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u01af",
+            "\1\u01b0",
             "",
-            "\1\u01b1",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01b2",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u01b4",
-            "",
+            "\1\u01b3",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "",
             "\1\u01b5",
             "",
-            "\1\u01b6",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
             "",
+            "\1\u01b6",
+            "\1\u01b7",
             "\1\u01b8",
             "\1\u01b9",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u01ba",
             "\1\u01bb",
-            "\1\73\13\uffff\12\73\7\uffff\1\u01bc\31\73\4\uffff\1\73\1"+
-            "\uffff\32\73",
+            "\1\u01bc",
+            "\1\u01bd",
+            "",
             "\1\u01be",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u01bf",
+            "",
             "\1\u01c0",
             "\1\u01c1",
             "\1\u01c2",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u01c3",
+            "\1\u01c4",
             "\1\u01c5",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u01c9",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
             "",
+            "\1\u01c9",
             "\1\u01ca",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u01cb",
             "\1\u01cc",
             "\1\u01cd",
-            "",
             "\1\u01ce",
             "\1\u01cf",
-            "\1\u01d0",
-            "\1\u01d1",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01d2",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u01d4",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u01d3",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
             "\1\u01d6",
-            "",
-            "",
             "\1\u01d7",
-            "\1\u01d8",
-            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01d9",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "",
+            "\1\u01da",
             "\1\u01db",
             "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u01dc",
             "",
+            "\1\u01dd",
             "\1\u01de",
             "\1\u01df",
-            "",
             "\1\u01e0",
-            "",
             "\1\u01e1",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u01e2",
             "\1\u01e3",
             "",
-            "",
             "\1\u01e4",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "",
-            "",
-            "",
-            "\1\u01e5",
             "\1\u01e6",
-            "",
             "\1\u01e7",
-            "\1\u01e8",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01e9",
-            "\1\u01ea",
-            "\1\u01eb",
+            "\1\76\13\uffff\12\76\7\uffff\1\u01ea\31\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01ec",
-            "\1\u01ed",
-            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01ee",
-            "",
             "\1\u01ef",
             "\1\u01f0",
-            "\1\u01f1",
-            "\1\u01f2",
-            "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "",
-            "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01f3",
+            "\1\u01f4",
             "\1\u01f5",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01f9",
             "\1\u01fa",
             "\1\u01fb",
-            "\1\u01fc",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u01fd",
             "\1\u01fe",
             "\1\u01ff",
-            "\1\u0200",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u0201",
+            "",
+            "",
             "\1\u0202",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u0203",
+            "",
+            "",
             "\1\u0204",
             "\1\u0205",
+            "",
             "\1\u0206",
             "\1\u0207",
-            "",
-            "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "",
-            "",
-            "",
-            "\1\u0209",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "",
-            "\1\u020b",
+            "\1\u0208",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u020a\2\uffff\1\u020b",
             "\1\u020c",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u020e",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u020f",
             "\1\u0210",
             "\1\u0211",
-            "",
             "\1\u0212",
-            "\1\u0213",
-            "\1\u0214",
-            "\1\u0215",
             "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u0215",
             "\1\u0216",
             "",
             "\1\u0217",
+            "",
             "\1\u0218",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u021a",
             "",
-            "\1\u0219",
             "",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
             "\1\u021b",
             "\1\u021c",
             "\1\u021d",
+            "",
+            "",
+            "",
             "\1\u021e",
             "\1\u021f",
             "\1\u0220",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "",
+            "\1\u0221",
             "\1\u0222",
             "\1\u0223",
             "",
             "\1\u0224",
             "\1\u0225",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u0226",
+            "\1\u0227",
             "\1\u0228",
             "\1\u0229",
-            "",
             "\1\u022a",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u022b",
+            "",
             "\1\u022c",
             "\1\u022d",
-            "",
-            "",
             "\1\u022e",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u0230",
             "",
+            "\1\u022f",
+            "\1\u0230",
             "\1\u0231",
             "\1\u0232",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "",
-            "\1\u0234",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u0235",
-            "\1\u0236",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "",
-            "\1\u0237",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\u0239",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "\1\u023a",
-            "",
             "\1\u023b",
             "\1\u023c",
             "\1\u023d",
             "\1\u023e",
             "\1\u023f",
             "\1\u0240",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
-            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32"+
-            "\73",
+            "\1\u0241",
+            "\1\u0242",
+            "\1\u0243",
+            "\1\u0244",
+            "\1\u0245",
+            "\1\u0246",
+            "\1\u0247",
+            "\1\u0248",
+            "\1\u0249",
+            "\1\u024a",
+            "\1\u024b",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u024d",
+            "\1\u024e",
+            "\1\u024f",
+            "\1\u0250",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\u0254",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0256",
+            "\1\u0257",
+            "\1\u0258",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u025c",
+            "\1\u025d",
+            "\1\u025e",
+            "\1\u025f",
+            "\1\u0260",
+            "\1\u0261",
+            "\1\u0262",
+            "\1\u0263",
+            "",
+            "\1\u0264",
+            "\1\u0265",
+            "\1\u0266",
+            "\1\u0267",
+            "",
+            "\1\u0268",
+            "\1\u0269",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u026c",
+            "\1\u026d",
+            "",
+            "",
+            "",
+            "\1\u026e",
+            "\1\u026f",
+            "\1\u0270",
+            "\1\u0271",
+            "\1\u0272",
+            "\1\u0273",
+            "\1\u0274",
+            "\1\u0275",
+            "\1\u0276",
+            "\1\u0277",
+            "\1\u0278",
+            "\1\u0279",
+            "\1\u027a",
+            "\1\u027b",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u027d",
+            "\1\u027e",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0281",
+            "\1\u0282",
+            "\1\u0283",
+            "\1\u0284",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0286",
+            "\1\u0287",
+            "\1\u0288",
+            "\1\u0289",
+            "\1\u028a",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u028c",
+            "\1\u028d",
+            "",
+            "",
+            "\1\u028e",
+            "\1\u028f",
+            "\1\u0290",
+            "\1\u0291",
+            "",
+            "\1\u0292",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0294",
+            "\1\u0295",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u0297",
+            "\1\u0298",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u029a",
+            "\1\u029b",
+            "\1\u029c",
+            "\1\u029d",
+            "",
+            "\1\u029e",
+            "\1\u029f",
+            "",
+            "\1\u02a0",
+            "\1\u02a1",
+            "",
+            "\1\u02a2",
+            "\1\u02a3",
+            "\1\u02a4",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02a6",
+            "\1\u02a7",
+            "\1\u02a8",
+            "\1\u02a9",
+            "\1\u02aa",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02af",
+            "\1\u02b0",
+            "\1\u02b1",
+            "",
+            "",
+            "",
+            "",
+            "\1\u02b2",
+            "\1\u02b3",
+            "\1\u02b4",
+            "\1\u02b5",
+            "\1\u02b6",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02b8",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
             "",
             ""
     };
@@ -5206,7 +5398,7 @@
             this.transition = DFA21_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 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | 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 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | 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;
@@ -5222,113 +5414,119 @@
 
                         else if ( (LA21_0=='}') ) {s = 3;}
 
-                        else if ( (LA21_0=='t') ) {s = 4;}
+                        else if ( (LA21_0=='c') ) {s = 4;}
 
                         else if ( (LA21_0=='d') ) {s = 5;}
 
-                        else if ( (LA21_0=='i') ) {s = 6;}
+                        else if ( (LA21_0=='k') ) {s = 6;}
 
-                        else if ( (LA21_0=='g') ) {s = 7;}
+                        else if ( (LA21_0=='t') ) {s = 7;}
 
-                        else if ( (LA21_0=='c') ) {s = 8;}
+                        else if ( (LA21_0=='i') ) {s = 8;}
 
-                        else if ( (LA21_0=='e') ) {s = 9;}
+                        else if ( (LA21_0=='s') ) {s = 9;}
 
-                        else if ( (LA21_0=='m') ) {s = 10;}
+                        else if ( (LA21_0=='r') ) {s = 10;}
 
-                        else if ( (LA21_0=='s') ) {s = 11;}
+                        else if ( (LA21_0=='w') ) {s = 11;}
 
-                        else if ( (LA21_0=='r') ) {s = 12;}
+                        else if ( (LA21_0=='u') ) {s = 12;}
 
-                        else if ( (LA21_0=='w') ) {s = 13;}
+                        else if ( (LA21_0=='f') ) {s = 13;}
 
-                        else if ( (LA21_0=='.') ) {s = 14;}
+                        else if ( (LA21_0=='g') ) {s = 14;}
 
-                        else if ( (LA21_0=='*') ) {s = 15;}
+                        else if ( (LA21_0=='e') ) {s = 15;}
 
-                        else if ( (LA21_0=='@') ) {s = 16;}
+                        else if ( (LA21_0=='m') ) {s = 16;}
 
-                        else if ( (LA21_0=='(') ) {s = 17;}
+                        else if ( (LA21_0=='o') ) {s = 17;}
 
-                        else if ( (LA21_0==',') ) {s = 18;}
+                        else if ( (LA21_0=='*') ) {s = 18;}
 
-                        else if ( (LA21_0==')') ) {s = 19;}
+                        else if ( (LA21_0=='n') ) {s = 19;}
 
-                        else if ( (LA21_0=='=') ) {s = 20;}
+                        else if ( (LA21_0==';') ) {s = 20;}
 
-                        else if ( (LA21_0=='#') ) {s = 21;}
+                        else if ( (LA21_0=='@') ) {s = 21;}
 
-                        else if ( (LA21_0=='[') ) {s = 22;}
+                        else if ( (LA21_0=='(') ) {s = 22;}
 
-                        else if ( (LA21_0==']') ) {s = 23;}
+                        else if ( (LA21_0==',') ) {s = 23;}
 
-                        else if ( (LA21_0=='+') ) {s = 24;}
+                        else if ( (LA21_0==')') ) {s = 24;}
 
-                        else if ( (LA21_0=='-') ) {s = 25;}
+                        else if ( (LA21_0=='=') ) {s = 25;}
 
-                        else if ( (LA21_0=='/') ) {s = 26;}
+                        else if ( (LA21_0=='#') ) {s = 26;}
 
-                        else if ( (LA21_0=='%') ) {s = 27;}
+                        else if ( (LA21_0=='[') ) {s = 27;}
 
-                        else if ( (LA21_0=='<') ) {s = 28;}
+                        else if ( (LA21_0==']') ) {s = 28;}
 
-                        else if ( (LA21_0=='>') ) {s = 29;}
+                        else if ( (LA21_0=='+') ) {s = 29;}
 
-                        else if ( (LA21_0=='|') ) {s = 30;}
+                        else if ( (LA21_0=='-') ) {s = 30;}
 
-                        else if ( (LA21_0=='&') ) {s = 31;}
+                        else if ( (LA21_0=='/') ) {s = 31;}
 
-                        else if ( (LA21_0=='!') ) {s = 32;}
+                        else if ( (LA21_0=='%') ) {s = 32;}
 
-                        else if ( (LA21_0=='?') ) {s = 33;}
+                        else if ( (LA21_0=='<') ) {s = 33;}
 
-                        else if ( (LA21_0=='a') ) {s = 34;}
+                        else if ( (LA21_0=='>') ) {s = 34;}
 
-                        else if ( (LA21_0==':') ) {s = 35;}
+                        else if ( (LA21_0=='|') ) {s = 35;}
 
-                        else if ( (LA21_0==';') ) {s = 36;}
+                        else if ( (LA21_0=='&') ) {s = 36;}
 
-                        else if ( (LA21_0=='f') ) {s = 37;}
+                        else if ( (LA21_0=='!') ) {s = 37;}
 
-                        else if ( (LA21_0=='v') ) {s = 38;}
+                        else if ( (LA21_0=='.') ) {s = 38;}
 
-                        else if ( (LA21_0=='n') ) {s = 39;}
+                        else if ( (LA21_0=='?') ) {s = 39;}
 
-                        else if ( (LA21_0=='C') ) {s = 40;}
+                        else if ( (LA21_0=='a') ) {s = 40;}
 
-                        else if ( (LA21_0=='S') ) {s = 41;}
+                        else if ( (LA21_0==':') ) {s = 41;}
 
-                        else if ( (LA21_0=='R') ) {s = 42;}
+                        else if ( (LA21_0=='v') ) {s = 42;}
 
-                        else if ( (LA21_0=='D') ) {s = 43;}
+                        else if ( (LA21_0=='C') ) {s = 43;}
 
-                        else if ( (LA21_0=='F') ) {s = 44;}
+                        else if ( (LA21_0=='S') ) {s = 44;}
 
-                        else if ( (LA21_0=='A') ) {s = 45;}
+                        else if ( (LA21_0=='R') ) {s = 45;}
 
-                        else if ( (LA21_0=='E') ) {s = 46;}
+                        else if ( (LA21_0=='D') ) {s = 46;}
 
-                        else if ( (LA21_0=='N') ) {s = 47;}
+                        else if ( (LA21_0=='F') ) {s = 47;}
 
-                        else if ( (LA21_0=='P') ) {s = 48;}
+                        else if ( (LA21_0=='A') ) {s = 48;}
 
-                        else if ( (LA21_0=='I') ) {s = 49;}
+                        else if ( (LA21_0=='E') ) {s = 49;}
 
-                        else if ( (LA21_0=='0') ) {s = 50;}
+                        else if ( (LA21_0=='N') ) {s = 50;}
 
-                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 51;}
+                        else if ( (LA21_0=='P') ) {s = 51;}
 
-                        else if ( (LA21_0=='^') ) {s = 52;}
+                        else if ( (LA21_0=='I') ) {s = 52;}
 
-                        else if ( (LA21_0=='$'||LA21_0=='B'||(LA21_0>='G' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='M')||LA21_0=='O'||LA21_0=='Q'||(LA21_0>='T' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='h'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='o'||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 53;}
+                        else if ( (LA21_0=='0') ) {s = 53;}
 
-                        else if ( (LA21_0=='\"') ) {s = 54;}
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 54;}
 
-                        else if ( (LA21_0=='\'') ) {s = 55;}
+                        else if ( (LA21_0=='^') ) {s = 55;}
 
-                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 56;}
+                        else if ( (LA21_0=='$'||LA21_0=='B'||(LA21_0>='G' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='M')||LA21_0=='O'||LA21_0=='Q'||(LA21_0>='T' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='h'||LA21_0=='j'||LA21_0=='l'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 56;}
 
-                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 57;}
+                        else if ( (LA21_0=='\"') ) {s = 57;}
+
+                        else if ( (LA21_0=='\'') ) {s = 58;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 59;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 60;}
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSLParser.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSLParser.java
index 50c4651..73df57f 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSLParser.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSLParser.java
@@ -1,17 +1,4 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-package org.eclipse.osbp.xtext.action.parser.antlr.internal; 
+package org.eclipse.osbp.xtext.action.parser.antlr.internal;
 
 import org.eclipse.xtext.*;
 import org.eclipse.xtext.parser.*;
@@ -33,25 +20,50 @@
 import java.util.ArrayList;
 import java.util.Map;
 import java.util.HashMap;
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
 @SuppressWarnings("all")
 public class InternalActionDSLParser extends AbstractInternalAntlrParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'toolbar'", "'described by'", "'items'", "'item'", "'icon'", "'group'", "'canExecute'", "'executeParameter'", "'message'", "'taskAction'", "'selectWorkloadAction'", "'dialogAction'", "'reportAction'", "'chartAction'", "'workflowAction'", "'datainterchangeAction'", "'genericAction'", "'import'", "'.'", "'*'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "';'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'Claim'", "'Start'", "'Stop'", "'Release'", "'Suspend'", "'Resume'", "'Skip'", "'Complete'", "'Delegate'", "'Forward'", "'Fail'", "'Register'", "'Remove'", "'Activate'", "'Exit'", "'RemoveAll'", "'AddAll'", "'New'", "'Save'", "'Delete'", "'Cancel'", "'PrintOnServer'", "'Download'", "'Import'", "'Export'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'command'", "'describedBy'", "'keyBinding'", "'toolbar'", "'items'", "'item'", "'icon'", "'taskAction'", "'selectWorkloadAction'", "'dialogAction'", "'reportAction'", "'chartAction'", "'workflowAction'", "'datainterchangeAction'", "'userinterfaceAction'", "'functionalAction'", "'group'", "'canExecute'", "'executeImmediate'", "'messageCategory'", "'onFailMessage'", "'onSuccessMessage'", "'executeLater'", "'onStartedMessage'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'Claim'", "'Start'", "'Stop'", "'Release'", "'Suspend'", "'Resume'", "'Skip'", "'Complete'", "'Delegate'", "'Forward'", "'Fail'", "'Register'", "'Remove'", "'Activate'", "'Exit'", "'RemoveAll'", "'AddAll'", "'New'", "'Save'", "'Delete'", "'Cancel'", "'PrintOnServer'", "'Download'", "'Import'", "'Export'", "'NextPart'", "'PreviousPart'"
     };
     public static final int RULE_HEX=6;
     public static final int T__50=50;
+    public static final int T__140=140;
     public static final int T__59=59;
     public static final int T__55=55;
     public static final int T__56=56;
     public static final int T__57=57;
     public static final int T__58=58;
     public static final int T__51=51;
+    public static final int T__137=137;
     public static final int T__52=52;
+    public static final int T__136=136;
     public static final int T__53=53;
+    public static final int T__139=139;
     public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
     public static final int T__60=60;
+    public static final int T__135=135;
     public static final int T__61=61;
+    public static final int T__134=134;
     public static final int RULE_ID=4;
+    public static final int T__131=131;
     public static final int T__130=130;
     public static final int RULE_INT=7;
     public static final int T__66=66;
@@ -181,23 +193,23 @@
         
 
     public String[] getTokenNames() { return InternalActionDSLParser.tokenNames; }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g"; }
+    public String getGrammarFileName() { return "InternalActionDSL.g"; }
 
 
 
      	private ActionDSLGrammarAccess grammarAccess;
-     	
+
         public InternalActionDSLParser(TokenStream input, ActionDSLGrammarAccess grammarAccess) {
             this(input);
             this.grammarAccess = grammarAccess;
             registerRules(grammarAccess.getGrammar());
         }
-        
+
         @Override
         protected String getFirstRuleName() {
-        	return "ActionModel";	
+        	return "ActionModel";
        	}
-       	
+
        	@Override
        	protected ActionDSLGrammarAccess getGrammarAccess() {
        		return grammarAccess;
@@ -205,8 +217,9 @@
 
 
 
+
     // $ANTLR start "entryRuleActionModel"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:68:1: entryRuleActionModel returns [EObject current=null] : iv_ruleActionModel= ruleActionModel EOF ;
+    // InternalActionDSL.g:78:1: entryRuleActionModel returns [EObject current=null] : iv_ruleActionModel= ruleActionModel EOF ;
     public final EObject entryRuleActionModel() throws RecognitionException {
         EObject current = null;
 
@@ -214,13 +227,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:69:2: (iv_ruleActionModel= ruleActionModel EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:70:2: iv_ruleActionModel= ruleActionModel EOF
+            // InternalActionDSL.g:78:52: (iv_ruleActionModel= ruleActionModel EOF )
+            // InternalActionDSL.g:79:2: iv_ruleActionModel= ruleActionModel EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionModelRule()); 
             }
-            pushFollow(FOLLOW_ruleActionModel_in_entryRuleActionModel75);
+            pushFollow(FOLLOW_1);
             iv_ruleActionModel=ruleActionModel();
 
             state._fsp--;
@@ -228,16 +241,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionModel; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionModel85); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -246,59 +259,111 @@
 
 
     // $ANTLR start "ruleActionModel"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:77:1: ruleActionModel returns [EObject current=null] : ( (lv_packages_0_0= ruleActionPackage ) )* ;
+    // InternalActionDSL.g:85:1: ruleActionModel returns [EObject current=null] : ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleActionPackage ) )* ) ;
     public final EObject ruleActionModel() throws RecognitionException {
         EObject current = null;
 
-        EObject lv_packages_0_0 = null;
+        EObject lv_importSection_0_0 = null;
+
+        EObject lv_packages_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:80:28: ( ( (lv_packages_0_0= ruleActionPackage ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:81:1: ( (lv_packages_0_0= ruleActionPackage ) )*
+            // InternalActionDSL.g:91:2: ( ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleActionPackage ) )* ) )
+            // InternalActionDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleActionPackage ) )* )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:81:1: ( (lv_packages_0_0= ruleActionPackage ) )*
-            loop1:
-            do {
-                int alt1=2;
-                int LA1_0 = input.LA(1);
+            // InternalActionDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleActionPackage ) )* )
+            // InternalActionDSL.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleActionPackage ) )*
+            {
+            // InternalActionDSL.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
 
-                if ( (LA1_0==13) ) {
-                    alt1=1;
+            if ( (LA1_0==40) ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalActionDSL.g:94:4: (lv_importSection_0_0= ruleXImportSection )
+                    {
+                    // InternalActionDSL.g:94:4: (lv_importSection_0_0= ruleXImportSection )
+                    // InternalActionDSL.g:95:5: lv_importSection_0_0= ruleXImportSection
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getActionModelAccess().getImportSectionXImportSectionParserRuleCall_0_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_3);
+                    lv_importSection_0_0=ruleXImportSection();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getActionModelRule());
+                      					}
+                      					set(
+                      						current,
+                      						"importSection",
+                      						lv_importSection_0_0,
+                      						"org.eclipse.xtext.xbase.Xtype.XImportSection");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:112:3: ( (lv_packages_1_0= ruleActionPackage ) )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==13) ) {
+                    alt2=1;
                 }
 
 
-                switch (alt1) {
+                switch (alt2) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:82:1: (lv_packages_0_0= ruleActionPackage )
+            	    // InternalActionDSL.g:113:4: (lv_packages_1_0= ruleActionPackage )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:82:1: (lv_packages_0_0= ruleActionPackage )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:83:3: lv_packages_0_0= ruleActionPackage
+            	    // InternalActionDSL.g:113:4: (lv_packages_1_0= ruleActionPackage )
+            	    // InternalActionDSL.g:114:5: lv_packages_1_0= ruleActionPackage
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getActionModelAccess().getPackagesActionPackageParserRuleCall_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getActionModelAccess().getPackagesActionPackageParserRuleCall_1_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_ruleActionPackage_in_ruleActionModel130);
-            	    lv_packages_0_0=ruleActionPackage();
+            	    pushFollow(FOLLOW_3);
+            	    lv_packages_1_0=ruleActionPackage();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getActionModelRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"packages",
-            	              		lv_packages_0_0, 
-            	              		"ActionPackage");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getActionModelRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"packages",
+            	      						lv_packages_1_0,
+            	      						"org.eclipse.osbp.xtext.action.ActionDSL.ActionPackage");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -308,22 +373,27 @@
             	    break;
 
             	default :
-            	    break loop1;
+            	    break loop2;
                 }
             } while (true);
 
 
             }
 
+
+            }
+
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -332,7 +402,7 @@
 
 
     // $ANTLR start "entryRuleActionPackage"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:107:1: entryRuleActionPackage returns [EObject current=null] : iv_ruleActionPackage= ruleActionPackage EOF ;
+    // InternalActionDSL.g:135:1: entryRuleActionPackage returns [EObject current=null] : iv_ruleActionPackage= ruleActionPackage EOF ;
     public final EObject entryRuleActionPackage() throws RecognitionException {
         EObject current = null;
 
@@ -340,13 +410,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:108:2: (iv_ruleActionPackage= ruleActionPackage EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:109:2: iv_ruleActionPackage= ruleActionPackage EOF
+            // InternalActionDSL.g:135:54: (iv_ruleActionPackage= ruleActionPackage EOF )
+            // InternalActionDSL.g:136:2: iv_ruleActionPackage= ruleActionPackage EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionPackageRule()); 
             }
-            pushFollow(FOLLOW_ruleActionPackage_in_entryRuleActionPackage166);
+            pushFollow(FOLLOW_1);
             iv_ruleActionPackage=ruleActionPackage();
 
             state._fsp--;
@@ -354,16 +424,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionPackage; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionPackage176); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -372,7 +442,7 @@
 
 
     // $ANTLR start "ruleActionPackage"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:116:1: ruleActionPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleActionImport ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )? ) ;
+    // InternalActionDSL.g:142:1: ruleActionPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_commands_4_0= ruleActionCommand ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )? ) ;
     public final EObject ruleActionPackage() throws RecognitionException {
         EObject current = null;
 
@@ -381,67 +451,68 @@
         Token otherlv_6=null;
         AntlrDatatypeRuleToken lv_name_2_0 = null;
 
-        EObject lv_imports_4_0 = null;
+        EObject lv_commands_4_0 = null;
 
         EObject lv_toolbars_5_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:119:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleActionImport ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )? ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleActionImport ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )? )
+            // InternalActionDSL.g:148:2: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_commands_4_0= ruleActionCommand ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )? ) )
+            // InternalActionDSL.g:149:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_commands_4_0= ruleActionCommand ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )? )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleActionImport ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )? )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:120:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleActionImport ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )?
+            // InternalActionDSL.g:149:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_commands_4_0= ruleActionCommand ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )? )
+            // InternalActionDSL.g:150:3: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_commands_4_0= ruleActionCommand ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )?
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:120:2: ()
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:121:5: 
+            // InternalActionDSL.g:150:3: ()
+            // InternalActionDSL.g:151:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getActionPackageAccess().getActionPackageAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getActionPackageAccess().getActionPackageAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleActionPackage222); if (state.failed) return current;
+            otherlv_1=(Token)match(input,13,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getActionPackageAccess().getPackageKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getActionPackageAccess().getPackageKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:130:1: ( (lv_name_2_0= ruleQualifiedName ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            // InternalActionDSL.g:161:3: ( (lv_name_2_0= ruleQualifiedName ) )
+            // InternalActionDSL.g:162:4: (lv_name_2_0= ruleQualifiedName )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:132:3: lv_name_2_0= ruleQualifiedName
+            // InternalActionDSL.g:162:4: (lv_name_2_0= ruleQualifiedName )
+            // InternalActionDSL.g:163:5: lv_name_2_0= ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getActionPackageAccess().getNameQualifiedNameParserRuleCall_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleQualifiedName_in_ruleActionPackage243);
+            pushFollow(FOLLOW_5);
             lv_name_2_0=ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionPackageRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_2_0, 
-                      		"QualifiedName");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionPackageRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -449,77 +520,24 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:148:2: (otherlv_3= '{' ( (lv_imports_4_0= ruleActionImport ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )?
-            int alt4=2;
-            int LA4_0 = input.LA(1);
+            // InternalActionDSL.g:180:3: (otherlv_3= '{' ( (lv_commands_4_0= ruleActionCommand ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}' )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
 
-            if ( (LA4_0==14) ) {
-                alt4=1;
+            if ( (LA5_0==14) ) {
+                alt5=1;
             }
-            switch (alt4) {
+            switch (alt5) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:148:4: otherlv_3= '{' ( (lv_imports_4_0= ruleActionImport ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}'
+                    // InternalActionDSL.g:181:4: otherlv_3= '{' ( (lv_commands_4_0= ruleActionCommand ) )* ( (lv_toolbars_5_0= ruleActionToolbar ) )* otherlv_6= '}'
                     {
-                    otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleActionPackage256); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,14,FOLLOW_6); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_3, grammarAccess.getActionPackageAccess().getLeftCurlyBracketKeyword_3_0());
-                          
+                      				newLeafNode(otherlv_3, grammarAccess.getActionPackageAccess().getLeftCurlyBracketKeyword_3_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:152:1: ( (lv_imports_4_0= ruleActionImport ) )*
-                    loop2:
-                    do {
-                        int alt2=2;
-                        int LA2_0 = input.LA(1);
-
-                        if ( (LA2_0==33) ) {
-                            alt2=1;
-                        }
-
-
-                        switch (alt2) {
-                    	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:153:1: (lv_imports_4_0= ruleActionImport )
-                    	    {
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:153:1: (lv_imports_4_0= ruleActionImport )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:154:3: lv_imports_4_0= ruleActionImport
-                    	    {
-                    	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getActionPackageAccess().getImportsActionImportParserRuleCall_3_1_0()); 
-                    	      	    
-                    	    }
-                    	    pushFollow(FOLLOW_ruleActionImport_in_ruleActionPackage277);
-                    	    lv_imports_4_0=ruleActionImport();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return current;
-                    	    if ( state.backtracking==0 ) {
-
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getActionPackageRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"imports",
-                    	              		lv_imports_4_0, 
-                    	              		"ActionImport");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
-                    	    }
-
-                    	    }
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop2;
-                        }
-                    } while (true);
-
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:170:3: ( (lv_toolbars_5_0= ruleActionToolbar ) )*
+                    // InternalActionDSL.g:185:4: ( (lv_commands_4_0= ruleActionCommand ) )*
                     loop3:
                     do {
                         int alt3=2;
@@ -532,33 +550,33 @@
 
                         switch (alt3) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:171:1: (lv_toolbars_5_0= ruleActionToolbar )
+                    	    // InternalActionDSL.g:186:5: (lv_commands_4_0= ruleActionCommand )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:171:1: (lv_toolbars_5_0= ruleActionToolbar )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:172:3: lv_toolbars_5_0= ruleActionToolbar
+                    	    // InternalActionDSL.g:186:5: (lv_commands_4_0= ruleActionCommand )
+                    	    // InternalActionDSL.g:187:6: lv_commands_4_0= ruleActionCommand
                     	    {
                     	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getActionPackageAccess().getToolbarsActionToolbarParserRuleCall_3_2_0()); 
-                    	      	    
+
+                    	      						newCompositeNode(grammarAccess.getActionPackageAccess().getCommandsActionCommandParserRuleCall_3_1_0());
+                    	      					
                     	    }
-                    	    pushFollow(FOLLOW_ruleActionToolbar_in_ruleActionPackage299);
-                    	    lv_toolbars_5_0=ruleActionToolbar();
+                    	    pushFollow(FOLLOW_6);
+                    	    lv_commands_4_0=ruleActionCommand();
 
                     	    state._fsp--;
                     	    if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getActionPackageRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"toolbars",
-                    	              		lv_toolbars_5_0, 
-                    	              		"ActionToolbar");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
+                    	      						if (current==null) {
+                    	      							current = createModelElementForParent(grammarAccess.getActionPackageRule());
+                    	      						}
+                    	      						add(
+                    	      							current,
+                    	      							"commands",
+                    	      							lv_commands_4_0,
+                    	      							"org.eclipse.osbp.xtext.action.ActionDSL.ActionCommand");
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
                     	    }
 
                     	    }
@@ -572,11 +590,64 @@
                         }
                     } while (true);
 
-                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleActionPackage312); if (state.failed) return current;
+                    // InternalActionDSL.g:204:4: ( (lv_toolbars_5_0= ruleActionToolbar ) )*
+                    loop4:
+                    do {
+                        int alt4=2;
+                        int LA4_0 = input.LA(1);
+
+                        if ( (LA4_0==19) ) {
+                            alt4=1;
+                        }
+
+
+                        switch (alt4) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:205:5: (lv_toolbars_5_0= ruleActionToolbar )
+                    	    {
+                    	    // InternalActionDSL.g:205:5: (lv_toolbars_5_0= ruleActionToolbar )
+                    	    // InternalActionDSL.g:206:6: lv_toolbars_5_0= ruleActionToolbar
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      						newCompositeNode(grammarAccess.getActionPackageAccess().getToolbarsActionToolbarParserRuleCall_3_2_0());
+                    	      					
+                    	    }
+                    	    pushFollow(FOLLOW_7);
+                    	    lv_toolbars_5_0=ruleActionToolbar();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      						if (current==null) {
+                    	      							current = createModelElementForParent(grammarAccess.getActionPackageRule());
+                    	      						}
+                    	      						add(
+                    	      							current,
+                    	      							"toolbars",
+                    	      							lv_toolbars_5_0,
+                    	      							"org.eclipse.osbp.xtext.action.ActionDSL.ActionToolbar");
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop4;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_6, grammarAccess.getActionPackageAccess().getRightCurlyBracketKeyword_3_3());
-                          
+                      				newLeafNode(otherlv_6, grammarAccess.getActionPackageAccess().getRightCurlyBracketKeyword_3_3());
+                      			
                     }
 
                     }
@@ -591,14 +662,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -606,8 +679,332 @@
     // $ANTLR end "ruleActionPackage"
 
 
+    // $ANTLR start "entryRuleActionCommand"
+    // InternalActionDSL.g:232:1: entryRuleActionCommand returns [EObject current=null] : iv_ruleActionCommand= ruleActionCommand EOF ;
+    public final EObject entryRuleActionCommand() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleActionCommand = null;
+
+
+        try {
+            // InternalActionDSL.g:232:54: (iv_ruleActionCommand= ruleActionCommand EOF )
+            // InternalActionDSL.g:233:2: iv_ruleActionCommand= ruleActionCommand EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getActionCommandRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleActionCommand=ruleActionCommand();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleActionCommand; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleActionCommand"
+
+
+    // $ANTLR start "ruleActionCommand"
+    // InternalActionDSL.g:239:1: ruleActionCommand returns [EObject current=null] : ( () otherlv_1= 'command' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDescription_3_0= 'describedBy' ) ) ( (lv_description_4_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_hasKeyBinding_5_0= 'keyBinding' ) ) ( (lv_keyBinding_6_0= RULE_STRING ) ) )? ( (lv_actionType_7_0= ruleActionType ) ) ) ;
+    public final EObject ruleActionCommand() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_name_2_0=null;
+        Token lv_hasDescription_3_0=null;
+        Token lv_hasKeyBinding_5_0=null;
+        Token lv_keyBinding_6_0=null;
+        AntlrDatatypeRuleToken lv_description_4_0 = null;
+
+        EObject lv_actionType_7_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:245:2: ( ( () otherlv_1= 'command' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDescription_3_0= 'describedBy' ) ) ( (lv_description_4_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_hasKeyBinding_5_0= 'keyBinding' ) ) ( (lv_keyBinding_6_0= RULE_STRING ) ) )? ( (lv_actionType_7_0= ruleActionType ) ) ) )
+            // InternalActionDSL.g:246:2: ( () otherlv_1= 'command' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDescription_3_0= 'describedBy' ) ) ( (lv_description_4_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_hasKeyBinding_5_0= 'keyBinding' ) ) ( (lv_keyBinding_6_0= RULE_STRING ) ) )? ( (lv_actionType_7_0= ruleActionType ) ) )
+            {
+            // InternalActionDSL.g:246:2: ( () otherlv_1= 'command' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDescription_3_0= 'describedBy' ) ) ( (lv_description_4_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_hasKeyBinding_5_0= 'keyBinding' ) ) ( (lv_keyBinding_6_0= RULE_STRING ) ) )? ( (lv_actionType_7_0= ruleActionType ) ) )
+            // InternalActionDSL.g:247:3: () otherlv_1= 'command' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_hasDescription_3_0= 'describedBy' ) ) ( (lv_description_4_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_hasKeyBinding_5_0= 'keyBinding' ) ) ( (lv_keyBinding_6_0= RULE_STRING ) ) )? ( (lv_actionType_7_0= ruleActionType ) )
+            {
+            // InternalActionDSL.g:247:3: ()
+            // InternalActionDSL.g:248:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getActionCommandAccess().getActionCommandAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,16,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getActionCommandAccess().getCommandKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:258:3: ( (lv_name_2_0= RULE_ID ) )
+            // InternalActionDSL.g:259:4: (lv_name_2_0= RULE_ID )
+            {
+            // InternalActionDSL.g:259:4: (lv_name_2_0= RULE_ID )
+            // InternalActionDSL.g:260:5: lv_name_2_0= RULE_ID
+            {
+            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_8); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_name_2_0, grammarAccess.getActionCommandAccess().getNameIDTerminalRuleCall_2_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getActionCommandRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.xtext.xbase.Xtype.ID");
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:276:3: ( ( (lv_hasDescription_3_0= 'describedBy' ) ) ( (lv_description_4_0= ruleTRANSLATABLESTRING ) ) )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==17) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // InternalActionDSL.g:277:4: ( (lv_hasDescription_3_0= 'describedBy' ) ) ( (lv_description_4_0= ruleTRANSLATABLESTRING ) )
+                    {
+                    // InternalActionDSL.g:277:4: ( (lv_hasDescription_3_0= 'describedBy' ) )
+                    // InternalActionDSL.g:278:5: (lv_hasDescription_3_0= 'describedBy' )
+                    {
+                    // InternalActionDSL.g:278:5: (lv_hasDescription_3_0= 'describedBy' )
+                    // InternalActionDSL.g:279:6: lv_hasDescription_3_0= 'describedBy'
+                    {
+                    lv_hasDescription_3_0=(Token)match(input,17,FOLLOW_9); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_hasDescription_3_0, grammarAccess.getActionCommandAccess().getHasDescriptionDescribedByKeyword_3_0_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getActionCommandRule());
+                      						}
+                      						setWithLastConsumed(current, "hasDescription", true, "describedBy");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:291:4: ( (lv_description_4_0= ruleTRANSLATABLESTRING ) )
+                    // InternalActionDSL.g:292:5: (lv_description_4_0= ruleTRANSLATABLESTRING )
+                    {
+                    // InternalActionDSL.g:292:5: (lv_description_4_0= ruleTRANSLATABLESTRING )
+                    // InternalActionDSL.g:293:6: lv_description_4_0= ruleTRANSLATABLESTRING
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getActionCommandAccess().getDescriptionTRANSLATABLESTRINGParserRuleCall_3_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_8);
+                    lv_description_4_0=ruleTRANSLATABLESTRING();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getActionCommandRule());
+                      						}
+                      						set(
+                      							current,
+                      							"description",
+                      							lv_description_4_0,
+                      							"org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLESTRING");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:311:3: ( ( (lv_hasKeyBinding_5_0= 'keyBinding' ) ) ( (lv_keyBinding_6_0= RULE_STRING ) ) )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==18) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // InternalActionDSL.g:312:4: ( (lv_hasKeyBinding_5_0= 'keyBinding' ) ) ( (lv_keyBinding_6_0= RULE_STRING ) )
+                    {
+                    // InternalActionDSL.g:312:4: ( (lv_hasKeyBinding_5_0= 'keyBinding' ) )
+                    // InternalActionDSL.g:313:5: (lv_hasKeyBinding_5_0= 'keyBinding' )
+                    {
+                    // InternalActionDSL.g:313:5: (lv_hasKeyBinding_5_0= 'keyBinding' )
+                    // InternalActionDSL.g:314:6: lv_hasKeyBinding_5_0= 'keyBinding'
+                    {
+                    lv_hasKeyBinding_5_0=(Token)match(input,18,FOLLOW_9); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_hasKeyBinding_5_0, grammarAccess.getActionCommandAccess().getHasKeyBindingKeyBindingKeyword_4_0_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getActionCommandRule());
+                      						}
+                      						setWithLastConsumed(current, "hasKeyBinding", true, "keyBinding");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:326:4: ( (lv_keyBinding_6_0= RULE_STRING ) )
+                    // InternalActionDSL.g:327:5: (lv_keyBinding_6_0= RULE_STRING )
+                    {
+                    // InternalActionDSL.g:327:5: (lv_keyBinding_6_0= RULE_STRING )
+                    // InternalActionDSL.g:328:6: lv_keyBinding_6_0= RULE_STRING
+                    {
+                    lv_keyBinding_6_0=(Token)match(input,RULE_STRING,FOLLOW_8); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_keyBinding_6_0, grammarAccess.getActionCommandAccess().getKeyBindingSTRINGTerminalRuleCall_4_1_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getActionCommandRule());
+                      						}
+                      						setWithLastConsumed(
+                      							current,
+                      							"keyBinding",
+                      							lv_keyBinding_6_0,
+                      							"org.eclipse.xtext.xbase.Xtype.STRING");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:345:3: ( (lv_actionType_7_0= ruleActionType ) )
+            // InternalActionDSL.g:346:4: (lv_actionType_7_0= ruleActionType )
+            {
+            // InternalActionDSL.g:346:4: (lv_actionType_7_0= ruleActionType )
+            // InternalActionDSL.g:347:5: lv_actionType_7_0= ruleActionType
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getActionCommandAccess().getActionTypeActionTypeParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_actionType_7_0=ruleActionType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionCommandRule());
+              					}
+              					set(
+              						current,
+              						"actionType",
+              						lv_actionType_7_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.ActionType");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleActionCommand"
+
+
     // $ANTLR start "entryRuleActionToolbar"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:200:1: entryRuleActionToolbar returns [EObject current=null] : iv_ruleActionToolbar= ruleActionToolbar EOF ;
+    // InternalActionDSL.g:368:1: entryRuleActionToolbar returns [EObject current=null] : iv_ruleActionToolbar= ruleActionToolbar EOF ;
     public final EObject entryRuleActionToolbar() throws RecognitionException {
         EObject current = null;
 
@@ -615,13 +1012,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:201:2: (iv_ruleActionToolbar= ruleActionToolbar EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:202:2: iv_ruleActionToolbar= ruleActionToolbar EOF
+            // InternalActionDSL.g:368:54: (iv_ruleActionToolbar= ruleActionToolbar EOF )
+            // InternalActionDSL.g:369:2: iv_ruleActionToolbar= ruleActionToolbar EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionToolbarRule()); 
             }
-            pushFollow(FOLLOW_ruleActionToolbar_in_entryRuleActionToolbar350);
+            pushFollow(FOLLOW_1);
             iv_ruleActionToolbar=ruleActionToolbar();
 
             state._fsp--;
@@ -629,16 +1026,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionToolbar; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionToolbar360); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -647,7 +1044,7 @@
 
 
     // $ANTLR start "ruleActionToolbar"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:209:1: ruleActionToolbar returns [EObject current=null] : ( () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )? ) ;
+    // InternalActionDSL.g:375:1: ruleActionToolbar returns [EObject current=null] : ( () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )? ) ;
     public final EObject ruleActionToolbar() throws RecognitionException {
         EObject current = null;
 
@@ -662,371 +1059,58 @@
         EObject lv_actions_7_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:212:28: ( ( () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )? ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:213:1: ( () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )? )
+            // InternalActionDSL.g:381:2: ( ( () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )? ) )
+            // InternalActionDSL.g:382:2: ( () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )? )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:213:1: ( () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )? )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:213:2: () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )?
+            // InternalActionDSL.g:382:2: ( () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )? )
+            // InternalActionDSL.g:383:3: () otherlv_1= 'toolbar' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )?
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:213:2: ()
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:214:5: 
+            // InternalActionDSL.g:383:3: ()
+            // InternalActionDSL.g:384:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getActionToolbarAccess().getActionToolbarAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getActionToolbarAccess().getActionToolbarAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleActionToolbar406); if (state.failed) return current;
+            otherlv_1=(Token)match(input,19,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getActionToolbarAccess().getToolbarKeyword_1());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:223:1: ( (lv_name_2_0= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:224:1: (lv_name_2_0= RULE_ID )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:224:1: (lv_name_2_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:225:3: lv_name_2_0= RULE_ID
-            {
-            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActionToolbar423); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(lv_name_2_0, grammarAccess.getActionToolbarAccess().getNameIDTerminalRuleCall_2_0()); 
+              			newLeafNode(otherlv_1, grammarAccess.getActionToolbarAccess().getToolbarKeyword_1());
               		
             }
-            if ( state.backtracking==0 ) {
-
-              	        if (current==null) {
-              	            current = createModelElement(grammarAccess.getActionToolbarRule());
-              	        }
-                     		setWithLastConsumed(
-                     			current, 
-                     			"name",
-                      		lv_name_2_0, 
-                      		"ID");
-              	    
-            }
-
-            }
-
-
-            }
-
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:241:2: ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )?
-            int alt5=2;
-            int LA5_0 = input.LA(1);
-
-            if ( (LA5_0==17) ) {
-                alt5=1;
-            }
-            switch (alt5) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:241:3: ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:241:3: ( (lv_description_3_0= 'described by' ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:242:1: (lv_description_3_0= 'described by' )
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:242:1: (lv_description_3_0= 'described by' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:243:3: lv_description_3_0= 'described by'
-                    {
-                    lv_description_3_0=(Token)match(input,17,FOLLOW_17_in_ruleActionToolbar447); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              newLeafNode(lv_description_3_0, grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0());
-                          
-                    }
-                    if ( state.backtracking==0 ) {
-
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getActionToolbarRule());
-                      	        }
-                             		setWithLastConsumed(current, "description", true, "described by");
-                      	    
-                    }
-
-                    }
-
-
-                    }
-
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:256:2: ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:257:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:257:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:258:3: lv_descriptionValue_4_0= ruleTRANSLATABLESTRING
-                    {
-                    if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getActionToolbarAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
-                      	    
-                    }
-                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleActionToolbar481);
-                    lv_descriptionValue_4_0=ruleTRANSLATABLESTRING();
-
-                    state._fsp--;
-                    if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getActionToolbarRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"descriptionValue",
-                              		lv_descriptionValue_4_0, 
-                              		"TRANSLATABLESTRING");
-                      	        afterParserOrEnumRuleCall();
-                      	    
-                    }
-
-                    }
-
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:274:4: (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )?
-            int alt7=2;
-            int LA7_0 = input.LA(1);
-
-            if ( (LA7_0==18) ) {
-                alt7=1;
-            }
-            switch (alt7) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:274:6: otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}'
-                    {
-                    otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleActionToolbar496); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_5, grammarAccess.getActionToolbarAccess().getItemsKeyword_4_0());
-                          
-                    }
-                    otherlv_6=(Token)match(input,14,FOLLOW_14_in_ruleActionToolbar508); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_6, grammarAccess.getActionToolbarAccess().getLeftCurlyBracketKeyword_4_1());
-                          
-                    }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:282:1: ( (lv_actions_7_0= ruleActionButton ) )*
-                    loop6:
-                    do {
-                        int alt6=2;
-                        int LA6_0 = input.LA(1);
-
-                        if ( (LA6_0==19) ) {
-                            alt6=1;
-                        }
-
-
-                        switch (alt6) {
-                    	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:283:1: (lv_actions_7_0= ruleActionButton )
-                    	    {
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:283:1: (lv_actions_7_0= ruleActionButton )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:284:3: lv_actions_7_0= ruleActionButton
-                    	    {
-                    	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getActionToolbarAccess().getActionsActionButtonParserRuleCall_4_2_0()); 
-                    	      	    
-                    	    }
-                    	    pushFollow(FOLLOW_ruleActionButton_in_ruleActionToolbar529);
-                    	    lv_actions_7_0=ruleActionButton();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return current;
-                    	    if ( state.backtracking==0 ) {
-
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getActionToolbarRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"actions",
-                    	              		lv_actions_7_0, 
-                    	              		"ActionButton");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
-                    	    }
-
-                    	    }
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop6;
-                        }
-                    } while (true);
-
-                    otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleActionToolbar542); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_8, grammarAccess.getActionToolbarAccess().getRightCurlyBracketKeyword_4_3());
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleActionToolbar"
-
-
-    // $ANTLR start "entryRuleActionButton"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:312:1: entryRuleActionButton returns [EObject current=null] : iv_ruleActionButton= ruleActionButton EOF ;
-    public final EObject entryRuleActionButton() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleActionButton = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:313:2: (iv_ruleActionButton= ruleActionButton EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:314:2: iv_ruleActionButton= ruleActionButton EOF
+            // InternalActionDSL.g:394:3: ( (lv_name_2_0= RULE_ID ) )
+            // InternalActionDSL.g:395:4: (lv_name_2_0= RULE_ID )
             {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getActionButtonRule()); 
-            }
-            pushFollow(FOLLOW_ruleActionButton_in_entryRuleActionButton580);
-            iv_ruleActionButton=ruleActionButton();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleActionButton; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionButton590); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleActionButton"
-
-
-    // $ANTLR start "ruleActionButton"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:321:1: ruleActionButton returns [EObject current=null] : ( () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'icon' ( (lv_iconURI_6_0= RULE_STRING ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?) ) )? ( (lv_actionType_14_0= ruleActionType ) ) (otherlv_15= 'message' ( ( ruleQualifiedName ) ) )? ) ;
-    public final EObject ruleActionButton() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_1=null;
-        Token lv_description_3_0=null;
-        Token otherlv_5=null;
-        Token lv_iconURI_6_0=null;
-        Token otherlv_8=null;
-        Token otherlv_9=null;
-        Token otherlv_10=null;
-        Token otherlv_11=null;
-        Token otherlv_12=null;
-        Token otherlv_13=null;
-        Token otherlv_15=null;
-        AntlrDatatypeRuleToken lv_name_2_0 = null;
-
-        AntlrDatatypeRuleToken lv_descriptionValue_4_0 = null;
-
-        EObject lv_actionType_14_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:324:28: ( ( () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'icon' ( (lv_iconURI_6_0= RULE_STRING ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?) ) )? ( (lv_actionType_14_0= ruleActionType ) ) (otherlv_15= 'message' ( ( ruleQualifiedName ) ) )? ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:325:1: ( () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'icon' ( (lv_iconURI_6_0= RULE_STRING ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?) ) )? ( (lv_actionType_14_0= ruleActionType ) ) (otherlv_15= 'message' ( ( ruleQualifiedName ) ) )? )
+            // InternalActionDSL.g:395:4: (lv_name_2_0= RULE_ID )
+            // InternalActionDSL.g:396:5: lv_name_2_0= RULE_ID
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:325:1: ( () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'icon' ( (lv_iconURI_6_0= RULE_STRING ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?) ) )? ( (lv_actionType_14_0= ruleActionType ) ) (otherlv_15= 'message' ( ( ruleQualifiedName ) ) )? )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:325:2: () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? (otherlv_5= 'icon' ( (lv_iconURI_6_0= RULE_STRING ) ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?) ) )? ( (lv_actionType_14_0= ruleActionType ) ) (otherlv_15= 'message' ( ( ruleQualifiedName ) ) )?
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:325:2: ()
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:326:5: 
-            {
+            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_10); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getActionButtonAccess().getActionButtonAction_0(),
-                          current);
-                  
+              					newLeafNode(lv_name_2_0, grammarAccess.getActionToolbarAccess().getNameIDTerminalRuleCall_2_0());
+              				
             }
-
-            }
-
-            otherlv_1=(Token)match(input,19,FOLLOW_19_in_ruleActionButton636); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getActionButtonAccess().getItemKeyword_1());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:335:1: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:336:1: (lv_name_2_0= ruleTRANSLATABLEID )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:336:1: (lv_name_2_0= ruleTRANSLATABLEID )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:337:3: lv_name_2_0= ruleTRANSLATABLEID
-            {
-            if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionButtonAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-              	    
-            }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleActionButton657);
-            lv_name_2_0=ruleTRANSLATABLEID();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionButtonRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_2_0, 
-                      		"TRANSLATABLEID");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getActionToolbarRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.xtext.xbase.Xtype.ID");
+              				
             }
 
             }
@@ -1034,7 +1118,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:353:2: ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )?
+            // InternalActionDSL.g:412:3: ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )?
             int alt8=2;
             int LA8_0 = input.LA(1);
 
@@ -1043,27 +1127,27 @@
             }
             switch (alt8) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:353:3: ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
+                    // InternalActionDSL.g:413:4: ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:353:3: ( (lv_description_3_0= 'described by' ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:354:1: (lv_description_3_0= 'described by' )
+                    // InternalActionDSL.g:413:4: ( (lv_description_3_0= 'describedBy' ) )
+                    // InternalActionDSL.g:414:5: (lv_description_3_0= 'describedBy' )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:354:1: (lv_description_3_0= 'described by' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:355:3: lv_description_3_0= 'described by'
+                    // InternalActionDSL.g:414:5: (lv_description_3_0= 'describedBy' )
+                    // InternalActionDSL.g:415:6: lv_description_3_0= 'describedBy'
                     {
-                    lv_description_3_0=(Token)match(input,17,FOLLOW_17_in_ruleActionButton676); if (state.failed) return current;
+                    lv_description_3_0=(Token)match(input,17,FOLLOW_9); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_description_3_0, grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0());
-                          
+                      						newLeafNode(lv_description_3_0, grammarAccess.getActionToolbarAccess().getDescriptionDescribedByKeyword_3_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getActionButtonRule());
-                      	        }
-                             		setWithLastConsumed(current, "description", true, "described by");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getActionToolbarRule());
+                      						}
+                      						setWithLastConsumed(current, "description", true, "describedBy");
+                      					
                     }
 
                     }
@@ -1071,34 +1155,34 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:368:2: ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:369:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
+                    // InternalActionDSL.g:427:4: ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
+                    // InternalActionDSL.g:428:5: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:369:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:370:3: lv_descriptionValue_4_0= ruleTRANSLATABLESTRING
+                    // InternalActionDSL.g:428:5: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
+                    // InternalActionDSL.g:429:6: lv_descriptionValue_4_0= ruleTRANSLATABLESTRING
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getActionButtonAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getActionToolbarAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleActionButton710);
+                    pushFollow(FOLLOW_11);
                     lv_descriptionValue_4_0=ruleTRANSLATABLESTRING();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getActionButtonRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"descriptionValue",
-                              		lv_descriptionValue_4_0, 
-                              		"TRANSLATABLESTRING");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getActionToolbarRule());
+                      						}
+                      						set(
+                      							current,
+                      							"descriptionValue",
+                      							lv_descriptionValue_4_0,
+                      							"org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLESTRING");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -1112,339 +1196,231 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:386:4: (otherlv_5= 'icon' ( (lv_iconURI_6_0= RULE_STRING ) ) )?
-            int alt9=2;
-            int LA9_0 = input.LA(1);
+            // InternalActionDSL.g:447:3: (otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
 
-            if ( (LA9_0==20) ) {
-                alt9=1;
+            if ( (LA10_0==20) ) {
+                alt10=1;
             }
-            switch (alt9) {
+            switch (alt10) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:386:6: otherlv_5= 'icon' ( (lv_iconURI_6_0= RULE_STRING ) )
+                    // InternalActionDSL.g:448:4: otherlv_5= 'items' otherlv_6= '{' ( (lv_actions_7_0= ruleActionButton ) )* otherlv_8= '}'
                     {
-                    otherlv_5=(Token)match(input,20,FOLLOW_20_in_ruleActionButton725); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,20,FOLLOW_12); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_5, grammarAccess.getActionButtonAccess().getIconKeyword_4_0());
-                          
+                      				newLeafNode(otherlv_5, grammarAccess.getActionToolbarAccess().getItemsKeyword_4_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:390:1: ( (lv_iconURI_6_0= RULE_STRING ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:391:1: (lv_iconURI_6_0= RULE_STRING )
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:391:1: (lv_iconURI_6_0= RULE_STRING )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:392:3: lv_iconURI_6_0= RULE_STRING
-                    {
-                    lv_iconURI_6_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleActionButton742); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,14,FOLLOW_13); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			newLeafNode(lv_iconURI_6_0, grammarAccess.getActionButtonAccess().getIconURISTRINGTerminalRuleCall_4_1_0()); 
-                      		
+                      				newLeafNode(otherlv_6, grammarAccess.getActionToolbarAccess().getLeftCurlyBracketKeyword_4_1());
+                      			
                     }
-                    if ( state.backtracking==0 ) {
-
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getActionButtonRule());
-                      	        }
-                             		setWithLastConsumed(
-                             			current, 
-                             			"iconURI",
-                              		lv_iconURI_6_0, 
-                              		"STRING");
-                      	    
-                    }
-
-                    }
-
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:408:4: ( ( ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?) ) )?
-            int alt12=2;
-            int LA12_0 = input.LA(1);
-
-            if ( (LA12_0==21||LA12_0==23) ) {
-                alt12=1;
-            }
-            switch (alt12) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:410:1: ( ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?) )
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:410:1: ( ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:411:2: ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?)
-                    {
-                    getUnorderedGroupHelper().enter(grammarAccess.getActionButtonAccess().getUnorderedGroup_5());
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:414:2: ( ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?)
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:415:3: ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+ {...}?
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:415:3: ( ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) ) )+
-                    int cnt11=0;
-                    loop11:
+                    // InternalActionDSL.g:456:4: ( (lv_actions_7_0= ruleActionButton ) )*
+                    loop9:
                     do {
-                        int alt11=3;
-                        int LA11_0 = input.LA(1);
+                        int alt9=2;
+                        int LA9_0 = input.LA(1);
 
-                        if ( LA11_0 ==21 && getUnorderedGroupHelper().canSelect(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 0) ) {
-                            alt11=1;
-                        }
-                        else if ( LA11_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 1) ) {
-                            alt11=2;
+                        if ( (LA9_0==21) ) {
+                            alt9=1;
                         }
 
 
-                        switch (alt11) {
+                        switch (alt9) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:417:4: ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) )
+                    	    // InternalActionDSL.g:457:5: (lv_actions_7_0= ruleActionButton )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:417:4: ({...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:418:5: {...}? => ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) )
-                    	    {
-                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 0) ) {
-                    	        if (state.backtracking>0) {state.failed=true; return current;}
-                    	        throw new FailedPredicateException(input, "ruleActionButton", "getUnorderedGroupHelper().canSelect(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 0)");
-                    	    }
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:418:109: ( ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) ) )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:419:6: ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) )
-                    	    {
-                    	    getUnorderedGroupHelper().select(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 0);
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:422:6: ({...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? ) )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:422:7: {...}? => (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? )
-                    	    {
-                    	    if ( !((true)) ) {
-                    	        if (state.backtracking>0) {state.failed=true; return current;}
-                    	        throw new FailedPredicateException(input, "ruleActionButton", "true");
-                    	    }
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:422:16: (otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )? )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:422:18: otherlv_8= 'group' ( (otherlv_9= RULE_ID ) ) (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )?
-                    	    {
-                    	    otherlv_8=(Token)match(input,21,FOLLOW_21_in_ruleActionButton807); if (state.failed) return current;
-                    	    if ( state.backtracking==0 ) {
-
-                    	          	newLeafNode(otherlv_8, grammarAccess.getActionButtonAccess().getGroupKeyword_5_0_0());
-                    	          
-                    	    }
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:426:1: ( (otherlv_9= RULE_ID ) )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:427:1: (otherlv_9= RULE_ID )
-                    	    {
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:427:1: (otherlv_9= RULE_ID )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:428:3: otherlv_9= RULE_ID
+                    	    // InternalActionDSL.g:457:5: (lv_actions_7_0= ruleActionButton )
+                    	    // InternalActionDSL.g:458:6: lv_actions_7_0= ruleActionButton
                     	    {
                     	    if ( state.backtracking==0 ) {
 
-                    	      			if (current==null) {
-                    	      	            current = createModelElement(grammarAccess.getActionButtonRule());
-                    	      	        }
-                    	              
+                    	      						newCompositeNode(grammarAccess.getActionToolbarAccess().getActionsActionButtonParserRuleCall_4_2_0());
+                    	      					
                     	    }
-                    	    otherlv_9=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActionButton827); if (state.failed) return current;
+                    	    pushFollow(FOLLOW_13);
+                    	    lv_actions_7_0=ruleActionButton();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
-                    	      		newLeafNode(otherlv_9, grammarAccess.getActionButtonAccess().getGroupFunctionLibraryGroupCrossReference_5_0_1_0()); 
-                    	      	
+                    	      						if (current==null) {
+                    	      							current = createModelElementForParent(grammarAccess.getActionToolbarRule());
+                    	      						}
+                    	      						add(
+                    	      							current,
+                    	      							"actions",
+                    	      							lv_actions_7_0,
+                    	      							"org.eclipse.osbp.xtext.action.ActionDSL.ActionButton");
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
                     	    }
 
                     	    }
 
 
                     	    }
-
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:439:2: (otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) ) )?
-                    	    int alt10=2;
-                    	    int LA10_0 = input.LA(1);
-
-                    	    if ( (LA10_0==22) ) {
-                    	        alt10=1;
-                    	    }
-                    	    switch (alt10) {
-                    	        case 1 :
-                    	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:439:4: otherlv_10= 'canExecute' ( (otherlv_11= RULE_ID ) )
-                    	            {
-                    	            otherlv_10=(Token)match(input,22,FOLLOW_22_in_ruleActionButton840); if (state.failed) return current;
-                    	            if ( state.backtracking==0 ) {
-
-                    	                  	newLeafNode(otherlv_10, grammarAccess.getActionButtonAccess().getCanExecuteKeyword_5_0_2_0());
-                    	                  
-                    	            }
-                    	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:443:1: ( (otherlv_11= RULE_ID ) )
-                    	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:444:1: (otherlv_11= RULE_ID )
-                    	            {
-                    	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:444:1: (otherlv_11= RULE_ID )
-                    	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:445:3: otherlv_11= RULE_ID
-                    	            {
-                    	            if ( state.backtracking==0 ) {
-
-                    	              			if (current==null) {
-                    	              	            current = createModelElement(grammarAccess.getActionButtonRule());
-                    	              	        }
-                    	                      
-                    	            }
-                    	            otherlv_11=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActionButton860); if (state.failed) return current;
-                    	            if ( state.backtracking==0 ) {
-
-                    	              		newLeafNode(otherlv_11, grammarAccess.getActionButtonAccess().getCanexecuteFunctionLibraryFunctionCrossReference_5_0_2_1_0()); 
-                    	              	
-                    	            }
-
-                    	            }
-
-
-                    	            }
-
-
-                    	            }
-                    	            break;
-
-                    	    }
-
-
-                    	    }
-
-
-                    	    }
-
-                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getActionButtonAccess().getUnorderedGroup_5());
-
-                    	    }
-
-
-                    	    }
-
-
-                    	    }
-                    	    break;
-                    	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:463:4: ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) )
-                    	    {
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:463:4: ({...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:464:5: {...}? => ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) )
-                    	    {
-                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 1) ) {
-                    	        if (state.backtracking>0) {state.failed=true; return current;}
-                    	        throw new FailedPredicateException(input, "ruleActionButton", "getUnorderedGroupHelper().canSelect(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 1)");
-                    	    }
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:464:109: ( ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:465:6: ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) )
-                    	    {
-                    	    getUnorderedGroupHelper().select(grammarAccess.getActionButtonAccess().getUnorderedGroup_5(), 1);
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:468:6: ({...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:468:7: {...}? => (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) )
-                    	    {
-                    	    if ( !((true)) ) {
-                    	        if (state.backtracking>0) {state.failed=true; return current;}
-                    	        throw new FailedPredicateException(input, "ruleActionButton", "true");
-                    	    }
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:468:16: (otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) ) )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:468:18: otherlv_12= 'executeParameter' ( (otherlv_13= RULE_ID ) )
-                    	    {
-                    	    otherlv_12=(Token)match(input,23,FOLLOW_23_in_ruleActionButton930); if (state.failed) return current;
-                    	    if ( state.backtracking==0 ) {
-
-                    	          	newLeafNode(otherlv_12, grammarAccess.getActionButtonAccess().getExecuteParameterKeyword_5_1_0());
-                    	          
-                    	    }
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:472:1: ( (otherlv_13= RULE_ID ) )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:473:1: (otherlv_13= RULE_ID )
-                    	    {
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:473:1: (otherlv_13= RULE_ID )
-                    	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:474:3: otherlv_13= RULE_ID
-                    	    {
-                    	    if ( state.backtracking==0 ) {
-
-                    	      			if (current==null) {
-                    	      	            current = createModelElement(grammarAccess.getActionButtonRule());
-                    	      	        }
-                    	              
-                    	    }
-                    	    otherlv_13=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActionButton950); if (state.failed) return current;
-                    	    if ( state.backtracking==0 ) {
-
-                    	      		newLeafNode(otherlv_13, grammarAccess.getActionButtonAccess().getExecuteparameterFunctionLibraryFunctionCrossReference_5_1_1_0()); 
-                    	      	
-                    	    }
-
-                    	    }
-
-
-                    	    }
-
-
-                    	    }
-
-
-                    	    }
-
-                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getActionButtonAccess().getUnorderedGroup_5());
-
-                    	    }
-
-
-                    	    }
-
-
-                    	    }
                     	    break;
 
                     	default :
-                    	    if ( cnt11 >= 1 ) break loop11;
-                    	    if (state.backtracking>0) {state.failed=true; return current;}
-                                EarlyExitException eee =
-                                    new EarlyExitException(11, input);
-                                throw eee;
+                    	    break loop9;
                         }
-                        cnt11++;
                     } while (true);
 
-                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getActionButtonAccess().getUnorderedGroup_5()) ) {
-                        if (state.backtracking>0) {state.failed=true; return current;}
-                        throw new FailedPredicateException(input, "ruleActionButton", "getUnorderedGroupHelper().canLeave(grammarAccess.getActionButtonAccess().getUnorderedGroup_5())");
+                    otherlv_8=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_8, grammarAccess.getActionToolbarAccess().getRightCurlyBracketKeyword_4_3());
+                      			
                     }
 
                     }
-
-
-                    }
-
-                    getUnorderedGroupHelper().leave(grammarAccess.getActionButtonAccess().getUnorderedGroup_5());
-
-                    }
                     break;
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:500:3: ( (lv_actionType_14_0= ruleActionType ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:501:1: (lv_actionType_14_0= ruleActionType )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:501:1: (lv_actionType_14_0= ruleActionType )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:502:3: lv_actionType_14_0= ruleActionType
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleActionToolbar"
+
+
+    // $ANTLR start "entryRuleActionButton"
+    // InternalActionDSL.g:484:1: entryRuleActionButton returns [EObject current=null] : iv_ruleActionButton= ruleActionButton EOF ;
+    public final EObject entryRuleActionButton() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleActionButton = null;
+
+
+        try {
+            // InternalActionDSL.g:484:53: (iv_ruleActionButton= ruleActionButton EOF )
+            // InternalActionDSL.g:485:2: iv_ruleActionButton= ruleActionButton EOF
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionButtonAccess().getActionTypeActionTypeParserRuleCall_6_0()); 
-              	    
+               newCompositeNode(grammarAccess.getActionButtonRule()); 
             }
-            pushFollow(FOLLOW_ruleActionType_in_ruleActionButton1019);
-            lv_actionType_14_0=ruleActionType();
+            pushFollow(FOLLOW_1);
+            iv_ruleActionButton=ruleActionButton();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleActionButton; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleActionButton"
+
+
+    // $ANTLR start "ruleActionButton"
+    // InternalActionDSL.g:491:1: ruleActionButton returns [EObject current=null] : ( () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'command' ( (otherlv_6= RULE_ID ) ) (otherlv_7= 'icon' ( (lv_iconURI_8_0= RULE_STRING ) ) )? ) ;
+    public final EObject ruleActionButton() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_description_3_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token lv_iconURI_8_0=null;
+        AntlrDatatypeRuleToken lv_name_2_0 = null;
+
+        AntlrDatatypeRuleToken lv_descriptionValue_4_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:497:2: ( ( () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'command' ( (otherlv_6= RULE_ID ) ) (otherlv_7= 'icon' ( (lv_iconURI_8_0= RULE_STRING ) ) )? ) )
+            // InternalActionDSL.g:498:2: ( () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'command' ( (otherlv_6= RULE_ID ) ) (otherlv_7= 'icon' ( (lv_iconURI_8_0= RULE_STRING ) ) )? )
+            {
+            // InternalActionDSL.g:498:2: ( () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'command' ( (otherlv_6= RULE_ID ) ) (otherlv_7= 'icon' ( (lv_iconURI_8_0= RULE_STRING ) ) )? )
+            // InternalActionDSL.g:499:3: () otherlv_1= 'item' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'command' ( (otherlv_6= RULE_ID ) ) (otherlv_7= 'icon' ( (lv_iconURI_8_0= RULE_STRING ) ) )?
+            {
+            // InternalActionDSL.g:499:3: ()
+            // InternalActionDSL.g:500:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getActionButtonAccess().getActionButtonAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,21,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getActionButtonAccess().getItemKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:510:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
+            // InternalActionDSL.g:511:4: (lv_name_2_0= ruleTRANSLATABLEID )
+            {
+            // InternalActionDSL.g:511:4: (lv_name_2_0= ruleTRANSLATABLEID )
+            // InternalActionDSL.g:512:5: lv_name_2_0= ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getActionButtonAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_14);
+            lv_name_2_0=ruleTRANSLATABLEID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionButtonRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"actionType",
-                      		lv_actionType_14_0, 
-                      		"ActionType");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionButtonRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -1452,50 +1428,155 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:518:2: (otherlv_15= 'message' ( ( ruleQualifiedName ) ) )?
-            int alt13=2;
-            int LA13_0 = input.LA(1);
+            // InternalActionDSL.g:529:3: ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )?
+            int alt11=2;
+            int LA11_0 = input.LA(1);
 
-            if ( (LA13_0==24) ) {
-                alt13=1;
+            if ( (LA11_0==17) ) {
+                alt11=1;
             }
-            switch (alt13) {
+            switch (alt11) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:518:4: otherlv_15= 'message' ( ( ruleQualifiedName ) )
+                    // InternalActionDSL.g:530:4: ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
                     {
-                    otherlv_15=(Token)match(input,24,FOLLOW_24_in_ruleActionButton1032); if (state.failed) return current;
+                    // InternalActionDSL.g:530:4: ( (lv_description_3_0= 'describedBy' ) )
+                    // InternalActionDSL.g:531:5: (lv_description_3_0= 'describedBy' )
+                    {
+                    // InternalActionDSL.g:531:5: (lv_description_3_0= 'describedBy' )
+                    // InternalActionDSL.g:532:6: lv_description_3_0= 'describedBy'
+                    {
+                    lv_description_3_0=(Token)match(input,17,FOLLOW_9); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_15, grammarAccess.getActionButtonAccess().getMessageKeyword_7_0());
-                          
+                      						newLeafNode(lv_description_3_0, grammarAccess.getActionButtonAccess().getDescriptionDescribedByKeyword_3_0_0());
+                      					
                     }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:522:1: ( ( ruleQualifiedName ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:523:1: ( ruleQualifiedName )
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getActionButtonRule());
+                      						}
+                      						setWithLastConsumed(current, "description", true, "describedBy");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:544:4: ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
+                    // InternalActionDSL.g:545:5: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:523:1: ( ruleQualifiedName )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:524:3: ruleQualifiedName
+                    // InternalActionDSL.g:545:5: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
+                    // InternalActionDSL.g:546:6: lv_descriptionValue_4_0= ruleTRANSLATABLESTRING
                     {
                     if ( state.backtracking==0 ) {
 
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getActionButtonRule());
-                      	        }
-                              
+                      						newCompositeNode(grammarAccess.getActionButtonAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0());
+                      					
                     }
-                    if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getActionButtonAccess().getMessageMessageItemCrossReference_7_1_0()); 
-                      	    
-                    }
-                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleActionButton1055);
-                    ruleQualifiedName();
+                    pushFollow(FOLLOW_15);
+                    lv_descriptionValue_4_0=ruleTRANSLATABLESTRING();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                      	        afterParserOrEnumRuleCall();
-                      	    
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getActionButtonRule());
+                      						}
+                      						set(
+                      							current,
+                      							"descriptionValue",
+                      							lv_descriptionValue_4_0,
+                      							"org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLESTRING");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_5=(Token)match(input,16,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_5, grammarAccess.getActionButtonAccess().getCommandKeyword_4());
+              		
+            }
+            // InternalActionDSL.g:568:3: ( (otherlv_6= RULE_ID ) )
+            // InternalActionDSL.g:569:4: (otherlv_6= RULE_ID )
+            {
+            // InternalActionDSL.g:569:4: (otherlv_6= RULE_ID )
+            // InternalActionDSL.g:570:5: otherlv_6= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getActionButtonRule());
+              					}
+              				
+            }
+            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_16); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_6, grammarAccess.getActionButtonAccess().getCommandActionCommandCrossReference_5_0());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:581:3: (otherlv_7= 'icon' ( (lv_iconURI_8_0= RULE_STRING ) ) )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==22) ) {
+                alt12=1;
+            }
+            switch (alt12) {
+                case 1 :
+                    // InternalActionDSL.g:582:4: otherlv_7= 'icon' ( (lv_iconURI_8_0= RULE_STRING ) )
+                    {
+                    otherlv_7=(Token)match(input,22,FOLLOW_9); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_7, grammarAccess.getActionButtonAccess().getIconKeyword_6_0());
+                      			
+                    }
+                    // InternalActionDSL.g:586:4: ( (lv_iconURI_8_0= RULE_STRING ) )
+                    // InternalActionDSL.g:587:5: (lv_iconURI_8_0= RULE_STRING )
+                    {
+                    // InternalActionDSL.g:587:5: (lv_iconURI_8_0= RULE_STRING )
+                    // InternalActionDSL.g:588:6: lv_iconURI_8_0= RULE_STRING
+                    {
+                    lv_iconURI_8_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_iconURI_8_0, grammarAccess.getActionButtonAccess().getIconURISTRINGTerminalRuleCall_6_1_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getActionButtonRule());
+                      						}
+                      						setWithLastConsumed(
+                      							current,
+                      							"iconURI",
+                      							lv_iconURI_8_0,
+                      							"org.eclipse.xtext.xbase.Xtype.STRING");
+                      					
                     }
 
                     }
@@ -1516,14 +1597,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1532,7 +1615,7 @@
 
 
     // $ANTLR start "entryRuleActionType"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:545:1: entryRuleActionType returns [EObject current=null] : iv_ruleActionType= ruleActionType EOF ;
+    // InternalActionDSL.g:609:1: entryRuleActionType returns [EObject current=null] : iv_ruleActionType= ruleActionType EOF ;
     public final EObject entryRuleActionType() throws RecognitionException {
         EObject current = null;
 
@@ -1540,13 +1623,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:546:2: (iv_ruleActionType= ruleActionType EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:547:2: iv_ruleActionType= ruleActionType EOF
+            // InternalActionDSL.g:609:51: (iv_ruleActionType= ruleActionType EOF )
+            // InternalActionDSL.g:610:2: iv_ruleActionType= ruleActionType EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionTypeRule()); 
             }
-            pushFollow(FOLLOW_ruleActionType_in_entryRuleActionType1093);
+            pushFollow(FOLLOW_1);
             iv_ruleActionType=ruleActionType();
 
             state._fsp--;
@@ -1554,16 +1637,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionType; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionType1103); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1572,7 +1655,7 @@
 
 
     // $ANTLR start "ruleActionType"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:554:1: ruleActionType returns [EObject current=null] : (this_ActionTask_0= ruleActionTask | this_ActionSelectWorkload_1= ruleActionSelectWorkload | this_ActionDialog_2= ruleActionDialog | this_ActionReport_3= ruleActionReport | this_ActionChart_4= ruleActionChart | this_ActionWorkflow_5= ruleActionWorkflow | this_ActionGeneric_6= ruleActionGeneric | this_ActionDatainterchange_7= ruleActionDatainterchange ) ;
+    // InternalActionDSL.g:616:1: ruleActionType returns [EObject current=null] : (this_ActionTask_0= ruleActionTask | this_ActionSelectWorkload_1= ruleActionSelectWorkload | this_ActionDialog_2= ruleActionDialog | this_ActionReport_3= ruleActionReport | this_ActionChart_4= ruleActionChart | this_ActionWorkflow_5= ruleActionWorkflow | this_ActionFunction_6= ruleActionFunction | this_ActionDatainterchange_7= ruleActionDatainterchange | this_ActionUI_8= ruleActionUI ) ;
     public final EObject ruleActionType() throws RecognitionException {
         EObject current = null;
 
@@ -1588,241 +1671,271 @@
 
         EObject this_ActionWorkflow_5 = null;
 
-        EObject this_ActionGeneric_6 = null;
+        EObject this_ActionFunction_6 = null;
 
         EObject this_ActionDatainterchange_7 = null;
 
+        EObject this_ActionUI_8 = null;
 
-         enterRule(); 
-            
+
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:557:28: ( (this_ActionTask_0= ruleActionTask | this_ActionSelectWorkload_1= ruleActionSelectWorkload | this_ActionDialog_2= ruleActionDialog | this_ActionReport_3= ruleActionReport | this_ActionChart_4= ruleActionChart | this_ActionWorkflow_5= ruleActionWorkflow | this_ActionGeneric_6= ruleActionGeneric | this_ActionDatainterchange_7= ruleActionDatainterchange ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:558:1: (this_ActionTask_0= ruleActionTask | this_ActionSelectWorkload_1= ruleActionSelectWorkload | this_ActionDialog_2= ruleActionDialog | this_ActionReport_3= ruleActionReport | this_ActionChart_4= ruleActionChart | this_ActionWorkflow_5= ruleActionWorkflow | this_ActionGeneric_6= ruleActionGeneric | this_ActionDatainterchange_7= ruleActionDatainterchange )
+            // InternalActionDSL.g:622:2: ( (this_ActionTask_0= ruleActionTask | this_ActionSelectWorkload_1= ruleActionSelectWorkload | this_ActionDialog_2= ruleActionDialog | this_ActionReport_3= ruleActionReport | this_ActionChart_4= ruleActionChart | this_ActionWorkflow_5= ruleActionWorkflow | this_ActionFunction_6= ruleActionFunction | this_ActionDatainterchange_7= ruleActionDatainterchange | this_ActionUI_8= ruleActionUI ) )
+            // InternalActionDSL.g:623:2: (this_ActionTask_0= ruleActionTask | this_ActionSelectWorkload_1= ruleActionSelectWorkload | this_ActionDialog_2= ruleActionDialog | this_ActionReport_3= ruleActionReport | this_ActionChart_4= ruleActionChart | this_ActionWorkflow_5= ruleActionWorkflow | this_ActionFunction_6= ruleActionFunction | this_ActionDatainterchange_7= ruleActionDatainterchange | this_ActionUI_8= ruleActionUI )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:558:1: (this_ActionTask_0= ruleActionTask | this_ActionSelectWorkload_1= ruleActionSelectWorkload | this_ActionDialog_2= ruleActionDialog | this_ActionReport_3= ruleActionReport | this_ActionChart_4= ruleActionChart | this_ActionWorkflow_5= ruleActionWorkflow | this_ActionGeneric_6= ruleActionGeneric | this_ActionDatainterchange_7= ruleActionDatainterchange )
-            int alt14=8;
+            // InternalActionDSL.g:623:2: (this_ActionTask_0= ruleActionTask | this_ActionSelectWorkload_1= ruleActionSelectWorkload | this_ActionDialog_2= ruleActionDialog | this_ActionReport_3= ruleActionReport | this_ActionChart_4= ruleActionChart | this_ActionWorkflow_5= ruleActionWorkflow | this_ActionFunction_6= ruleActionFunction | this_ActionDatainterchange_7= ruleActionDatainterchange | this_ActionUI_8= ruleActionUI )
+            int alt13=9;
             switch ( input.LA(1) ) {
+            case 23:
+                {
+                alt13=1;
+                }
+                break;
+            case 24:
+                {
+                alt13=2;
+                }
+                break;
             case 25:
                 {
-                alt14=1;
+                alt13=3;
                 }
                 break;
             case 26:
                 {
-                alt14=2;
+                alt13=4;
                 }
                 break;
             case 27:
                 {
-                alt14=3;
+                alt13=5;
                 }
                 break;
             case 28:
                 {
-                alt14=4;
-                }
-                break;
-            case 29:
-                {
-                alt14=5;
-                }
-                break;
-            case 30:
-                {
-                alt14=6;
-                }
-                break;
-            case 32:
-                {
-                alt14=7;
+                alt13=6;
                 }
                 break;
             case 31:
                 {
-                alt14=8;
+                alt13=7;
+                }
+                break;
+            case 29:
+                {
+                alt13=8;
+                }
+                break;
+            case 30:
+                {
+                alt13=9;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 14, 0, input);
+                    new NoViableAltException("", 13, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt14) {
+            switch (alt13) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:559:5: this_ActionTask_0= ruleActionTask
+                    // InternalActionDSL.g:624:3: this_ActionTask_0= ruleActionTask
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getActionTypeAccess().getActionTaskParserRuleCall_0()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getActionTypeAccess().getActionTaskParserRuleCall_0());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleActionTask_in_ruleActionType1150);
+                    pushFollow(FOLLOW_2);
                     this_ActionTask_0=ruleActionTask();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ActionTask_0; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ActionTask_0;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:569:5: this_ActionSelectWorkload_1= ruleActionSelectWorkload
+                    // InternalActionDSL.g:633:3: this_ActionSelectWorkload_1= ruleActionSelectWorkload
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getActionTypeAccess().getActionSelectWorkloadParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getActionTypeAccess().getActionSelectWorkloadParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleActionSelectWorkload_in_ruleActionType1177);
+                    pushFollow(FOLLOW_2);
                     this_ActionSelectWorkload_1=ruleActionSelectWorkload();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ActionSelectWorkload_1; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ActionSelectWorkload_1;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:579:5: this_ActionDialog_2= ruleActionDialog
+                    // InternalActionDSL.g:642:3: this_ActionDialog_2= ruleActionDialog
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getActionTypeAccess().getActionDialogParserRuleCall_2()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getActionTypeAccess().getActionDialogParserRuleCall_2());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleActionDialog_in_ruleActionType1204);
+                    pushFollow(FOLLOW_2);
                     this_ActionDialog_2=ruleActionDialog();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ActionDialog_2; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ActionDialog_2;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:589:5: this_ActionReport_3= ruleActionReport
+                    // InternalActionDSL.g:651:3: this_ActionReport_3= ruleActionReport
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getActionTypeAccess().getActionReportParserRuleCall_3()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getActionTypeAccess().getActionReportParserRuleCall_3());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleActionReport_in_ruleActionType1231);
+                    pushFollow(FOLLOW_2);
                     this_ActionReport_3=ruleActionReport();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ActionReport_3; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ActionReport_3;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 5 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:599:5: this_ActionChart_4= ruleActionChart
+                    // InternalActionDSL.g:660:3: this_ActionChart_4= ruleActionChart
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getActionTypeAccess().getActionChartParserRuleCall_4()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getActionTypeAccess().getActionChartParserRuleCall_4());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleActionChart_in_ruleActionType1258);
+                    pushFollow(FOLLOW_2);
                     this_ActionChart_4=ruleActionChart();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ActionChart_4; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ActionChart_4;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:609:5: this_ActionWorkflow_5= ruleActionWorkflow
+                    // InternalActionDSL.g:669:3: this_ActionWorkflow_5= ruleActionWorkflow
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getActionTypeAccess().getActionWorkflowParserRuleCall_5()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getActionTypeAccess().getActionWorkflowParserRuleCall_5());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleActionWorkflow_in_ruleActionType1285);
+                    pushFollow(FOLLOW_2);
                     this_ActionWorkflow_5=ruleActionWorkflow();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ActionWorkflow_5; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ActionWorkflow_5;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:619:5: this_ActionGeneric_6= ruleActionGeneric
+                    // InternalActionDSL.g:678:3: this_ActionFunction_6= ruleActionFunction
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getActionTypeAccess().getActionGenericParserRuleCall_6()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getActionTypeAccess().getActionFunctionParserRuleCall_6());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleActionGeneric_in_ruleActionType1312);
-                    this_ActionGeneric_6=ruleActionGeneric();
+                    pushFollow(FOLLOW_2);
+                    this_ActionFunction_6=ruleActionFunction();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ActionGeneric_6; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ActionFunction_6;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 8 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:629:5: this_ActionDatainterchange_7= ruleActionDatainterchange
+                    // InternalActionDSL.g:687:3: this_ActionDatainterchange_7= ruleActionDatainterchange
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getActionTypeAccess().getActionDatainterchangeParserRuleCall_7()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getActionTypeAccess().getActionDatainterchangeParserRuleCall_7());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleActionDatainterchange_in_ruleActionType1339);
+                    pushFollow(FOLLOW_2);
                     this_ActionDatainterchange_7=ruleActionDatainterchange();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ActionDatainterchange_7; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ActionDatainterchange_7;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // InternalActionDSL.g:696:3: this_ActionUI_8= ruleActionUI
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getActionTypeAccess().getActionUIParserRuleCall_8());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_ActionUI_8=ruleActionUI();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_ActionUI_8;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
@@ -1834,14 +1947,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1850,7 +1965,7 @@
 
 
     // $ANTLR start "entryRuleActionTask"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:645:1: entryRuleActionTask returns [EObject current=null] : iv_ruleActionTask= ruleActionTask EOF ;
+    // InternalActionDSL.g:708:1: entryRuleActionTask returns [EObject current=null] : iv_ruleActionTask= ruleActionTask EOF ;
     public final EObject entryRuleActionTask() throws RecognitionException {
         EObject current = null;
 
@@ -1858,13 +1973,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:646:2: (iv_ruleActionTask= ruleActionTask EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:647:2: iv_ruleActionTask= ruleActionTask EOF
+            // InternalActionDSL.g:708:51: (iv_ruleActionTask= ruleActionTask EOF )
+            // InternalActionDSL.g:709:2: iv_ruleActionTask= ruleActionTask EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionTaskRule()); 
             }
-            pushFollow(FOLLOW_ruleActionTask_in_entryRuleActionTask1374);
+            pushFollow(FOLLOW_1);
             iv_ruleActionTask=ruleActionTask();
 
             state._fsp--;
@@ -1872,16 +1987,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionTask; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionTask1384); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1890,7 +2005,7 @@
 
 
     // $ANTLR start "ruleActionTask"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:654:1: ruleActionTask returns [EObject current=null] : (otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) ) ) ;
+    // InternalActionDSL.g:715:1: ruleActionTask returns [EObject current=null] : (otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) ) ) ;
     public final EObject ruleActionTask() throws RecognitionException {
         EObject current = null;
 
@@ -1898,49 +2013,50 @@
         Enumerator lv_action_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:657:28: ( (otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:658:1: (otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) ) )
+            // InternalActionDSL.g:721:2: ( (otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) ) ) )
+            // InternalActionDSL.g:722:2: (otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:658:1: (otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:658:3: otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) )
+            // InternalActionDSL.g:722:2: (otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) ) )
+            // InternalActionDSL.g:723:3: otherlv_0= 'taskAction' ( (lv_action_1_0= ruleTaskActionEnum ) )
             {
-            otherlv_0=(Token)match(input,25,FOLLOW_25_in_ruleActionTask1421); if (state.failed) return current;
+            otherlv_0=(Token)match(input,23,FOLLOW_17); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getActionTaskAccess().getTaskActionKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getActionTaskAccess().getTaskActionKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:662:1: ( (lv_action_1_0= ruleTaskActionEnum ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:663:1: (lv_action_1_0= ruleTaskActionEnum )
+            // InternalActionDSL.g:727:3: ( (lv_action_1_0= ruleTaskActionEnum ) )
+            // InternalActionDSL.g:728:4: (lv_action_1_0= ruleTaskActionEnum )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:663:1: (lv_action_1_0= ruleTaskActionEnum )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:664:3: lv_action_1_0= ruleTaskActionEnum
+            // InternalActionDSL.g:728:4: (lv_action_1_0= ruleTaskActionEnum )
+            // InternalActionDSL.g:729:5: lv_action_1_0= ruleTaskActionEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionTaskAccess().getActionTaskActionEnumEnumRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getActionTaskAccess().getActionTaskActionEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleTaskActionEnum_in_ruleActionTask1442);
+            pushFollow(FOLLOW_2);
             lv_action_1_0=ruleTaskActionEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionTaskRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"action",
-                      		lv_action_1_0, 
-                      		"TaskActionEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionTaskRule());
+              					}
+              					set(
+              						current,
+              						"action",
+              						lv_action_1_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.TaskActionEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -1955,14 +2071,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1971,7 +2089,7 @@
 
 
     // $ANTLR start "entryRuleActionSelectWorkload"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:688:1: entryRuleActionSelectWorkload returns [EObject current=null] : iv_ruleActionSelectWorkload= ruleActionSelectWorkload EOF ;
+    // InternalActionDSL.g:750:1: entryRuleActionSelectWorkload returns [EObject current=null] : iv_ruleActionSelectWorkload= ruleActionSelectWorkload EOF ;
     public final EObject entryRuleActionSelectWorkload() throws RecognitionException {
         EObject current = null;
 
@@ -1979,13 +2097,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:689:2: (iv_ruleActionSelectWorkload= ruleActionSelectWorkload EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:690:2: iv_ruleActionSelectWorkload= ruleActionSelectWorkload EOF
+            // InternalActionDSL.g:750:61: (iv_ruleActionSelectWorkload= ruleActionSelectWorkload EOF )
+            // InternalActionDSL.g:751:2: iv_ruleActionSelectWorkload= ruleActionSelectWorkload EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionSelectWorkloadRule()); 
             }
-            pushFollow(FOLLOW_ruleActionSelectWorkload_in_entryRuleActionSelectWorkload1478);
+            pushFollow(FOLLOW_1);
             iv_ruleActionSelectWorkload=ruleActionSelectWorkload();
 
             state._fsp--;
@@ -1993,16 +2111,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionSelectWorkload; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionSelectWorkload1488); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2011,7 +2129,7 @@
 
 
     // $ANTLR start "ruleActionSelectWorkload"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:697:1: ruleActionSelectWorkload returns [EObject current=null] : (otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) ) ) ;
+    // InternalActionDSL.g:757:1: ruleActionSelectWorkload returns [EObject current=null] : (otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) ) ) ;
     public final EObject ruleActionSelectWorkload() throws RecognitionException {
         EObject current = null;
 
@@ -2019,49 +2137,50 @@
         Enumerator lv_action_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:700:28: ( (otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:701:1: (otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) ) )
+            // InternalActionDSL.g:763:2: ( (otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) ) ) )
+            // InternalActionDSL.g:764:2: (otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:701:1: (otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:701:3: otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) )
+            // InternalActionDSL.g:764:2: (otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) ) )
+            // InternalActionDSL.g:765:3: otherlv_0= 'selectWorkloadAction' ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) )
             {
-            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleActionSelectWorkload1525); if (state.failed) return current;
+            otherlv_0=(Token)match(input,24,FOLLOW_18); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getActionSelectWorkloadAccess().getSelectWorkloadActionKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getActionSelectWorkloadAccess().getSelectWorkloadActionKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:705:1: ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:706:1: (lv_action_1_0= ruleSelectWorkloadActionEnum )
+            // InternalActionDSL.g:769:3: ( (lv_action_1_0= ruleSelectWorkloadActionEnum ) )
+            // InternalActionDSL.g:770:4: (lv_action_1_0= ruleSelectWorkloadActionEnum )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:706:1: (lv_action_1_0= ruleSelectWorkloadActionEnum )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:707:3: lv_action_1_0= ruleSelectWorkloadActionEnum
+            // InternalActionDSL.g:770:4: (lv_action_1_0= ruleSelectWorkloadActionEnum )
+            // InternalActionDSL.g:771:5: lv_action_1_0= ruleSelectWorkloadActionEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionSelectWorkloadAccess().getActionSelectWorkloadActionEnumEnumRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getActionSelectWorkloadAccess().getActionSelectWorkloadActionEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleSelectWorkloadActionEnum_in_ruleActionSelectWorkload1546);
+            pushFollow(FOLLOW_2);
             lv_action_1_0=ruleSelectWorkloadActionEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionSelectWorkloadRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"action",
-                      		lv_action_1_0, 
-                      		"SelectWorkloadActionEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionSelectWorkloadRule());
+              					}
+              					set(
+              						current,
+              						"action",
+              						lv_action_1_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.SelectWorkloadActionEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2076,14 +2195,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2092,7 +2213,7 @@
 
 
     // $ANTLR start "entryRuleActionDialog"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:731:1: entryRuleActionDialog returns [EObject current=null] : iv_ruleActionDialog= ruleActionDialog EOF ;
+    // InternalActionDSL.g:792:1: entryRuleActionDialog returns [EObject current=null] : iv_ruleActionDialog= ruleActionDialog EOF ;
     public final EObject entryRuleActionDialog() throws RecognitionException {
         EObject current = null;
 
@@ -2100,13 +2221,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:732:2: (iv_ruleActionDialog= ruleActionDialog EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:733:2: iv_ruleActionDialog= ruleActionDialog EOF
+            // InternalActionDSL.g:792:53: (iv_ruleActionDialog= ruleActionDialog EOF )
+            // InternalActionDSL.g:793:2: iv_ruleActionDialog= ruleActionDialog EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionDialogRule()); 
             }
-            pushFollow(FOLLOW_ruleActionDialog_in_entryRuleActionDialog1582);
+            pushFollow(FOLLOW_1);
             iv_ruleActionDialog=ruleActionDialog();
 
             state._fsp--;
@@ -2114,16 +2235,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionDialog; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionDialog1592); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2132,7 +2253,7 @@
 
 
     // $ANTLR start "ruleActionDialog"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:740:1: ruleActionDialog returns [EObject current=null] : (otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) ) ) ;
+    // InternalActionDSL.g:799:1: ruleActionDialog returns [EObject current=null] : (otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) ) ) ;
     public final EObject ruleActionDialog() throws RecognitionException {
         EObject current = null;
 
@@ -2140,49 +2261,50 @@
         Enumerator lv_action_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:743:28: ( (otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:744:1: (otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) ) )
+            // InternalActionDSL.g:805:2: ( (otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) ) ) )
+            // InternalActionDSL.g:806:2: (otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:744:1: (otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:744:3: otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) )
+            // InternalActionDSL.g:806:2: (otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) ) )
+            // InternalActionDSL.g:807:3: otherlv_0= 'dialogAction' ( (lv_action_1_0= ruleDialogActionEnum ) )
             {
-            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleActionDialog1629); if (state.failed) return current;
+            otherlv_0=(Token)match(input,25,FOLLOW_19); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getActionDialogAccess().getDialogActionKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getActionDialogAccess().getDialogActionKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:748:1: ( (lv_action_1_0= ruleDialogActionEnum ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:749:1: (lv_action_1_0= ruleDialogActionEnum )
+            // InternalActionDSL.g:811:3: ( (lv_action_1_0= ruleDialogActionEnum ) )
+            // InternalActionDSL.g:812:4: (lv_action_1_0= ruleDialogActionEnum )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:749:1: (lv_action_1_0= ruleDialogActionEnum )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:750:3: lv_action_1_0= ruleDialogActionEnum
+            // InternalActionDSL.g:812:4: (lv_action_1_0= ruleDialogActionEnum )
+            // InternalActionDSL.g:813:5: lv_action_1_0= ruleDialogActionEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionDialogAccess().getActionDialogActionEnumEnumRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getActionDialogAccess().getActionDialogActionEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleDialogActionEnum_in_ruleActionDialog1650);
+            pushFollow(FOLLOW_2);
             lv_action_1_0=ruleDialogActionEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionDialogRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"action",
-                      		lv_action_1_0, 
-                      		"DialogActionEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionDialogRule());
+              					}
+              					set(
+              						current,
+              						"action",
+              						lv_action_1_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.DialogActionEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2197,14 +2319,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2213,7 +2337,7 @@
 
 
     // $ANTLR start "entryRuleActionReport"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:774:1: entryRuleActionReport returns [EObject current=null] : iv_ruleActionReport= ruleActionReport EOF ;
+    // InternalActionDSL.g:834:1: entryRuleActionReport returns [EObject current=null] : iv_ruleActionReport= ruleActionReport EOF ;
     public final EObject entryRuleActionReport() throws RecognitionException {
         EObject current = null;
 
@@ -2221,13 +2345,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:775:2: (iv_ruleActionReport= ruleActionReport EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:776:2: iv_ruleActionReport= ruleActionReport EOF
+            // InternalActionDSL.g:834:53: (iv_ruleActionReport= ruleActionReport EOF )
+            // InternalActionDSL.g:835:2: iv_ruleActionReport= ruleActionReport EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionReportRule()); 
             }
-            pushFollow(FOLLOW_ruleActionReport_in_entryRuleActionReport1686);
+            pushFollow(FOLLOW_1);
             iv_ruleActionReport=ruleActionReport();
 
             state._fsp--;
@@ -2235,16 +2359,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionReport; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionReport1696); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2253,7 +2377,7 @@
 
 
     // $ANTLR start "ruleActionReport"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:783:1: ruleActionReport returns [EObject current=null] : (otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) ) ) ;
+    // InternalActionDSL.g:841:1: ruleActionReport returns [EObject current=null] : (otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) ) ) ;
     public final EObject ruleActionReport() throws RecognitionException {
         EObject current = null;
 
@@ -2261,49 +2385,50 @@
         Enumerator lv_action_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:786:28: ( (otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:787:1: (otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) ) )
+            // InternalActionDSL.g:847:2: ( (otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) ) ) )
+            // InternalActionDSL.g:848:2: (otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:787:1: (otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:787:3: otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) )
+            // InternalActionDSL.g:848:2: (otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) ) )
+            // InternalActionDSL.g:849:3: otherlv_0= 'reportAction' ( (lv_action_1_0= ruleReportActionEnum ) )
             {
-            otherlv_0=(Token)match(input,28,FOLLOW_28_in_ruleActionReport1733); if (state.failed) return current;
+            otherlv_0=(Token)match(input,26,FOLLOW_20); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getActionReportAccess().getReportActionKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getActionReportAccess().getReportActionKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:791:1: ( (lv_action_1_0= ruleReportActionEnum ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:792:1: (lv_action_1_0= ruleReportActionEnum )
+            // InternalActionDSL.g:853:3: ( (lv_action_1_0= ruleReportActionEnum ) )
+            // InternalActionDSL.g:854:4: (lv_action_1_0= ruleReportActionEnum )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:792:1: (lv_action_1_0= ruleReportActionEnum )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:793:3: lv_action_1_0= ruleReportActionEnum
+            // InternalActionDSL.g:854:4: (lv_action_1_0= ruleReportActionEnum )
+            // InternalActionDSL.g:855:5: lv_action_1_0= ruleReportActionEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionReportAccess().getActionReportActionEnumEnumRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getActionReportAccess().getActionReportActionEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleReportActionEnum_in_ruleActionReport1754);
+            pushFollow(FOLLOW_2);
             lv_action_1_0=ruleReportActionEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionReportRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"action",
-                      		lv_action_1_0, 
-                      		"ReportActionEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionReportRule());
+              					}
+              					set(
+              						current,
+              						"action",
+              						lv_action_1_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.ReportActionEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2318,14 +2443,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2334,7 +2461,7 @@
 
 
     // $ANTLR start "entryRuleActionChart"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:817:1: entryRuleActionChart returns [EObject current=null] : iv_ruleActionChart= ruleActionChart EOF ;
+    // InternalActionDSL.g:876:1: entryRuleActionChart returns [EObject current=null] : iv_ruleActionChart= ruleActionChart EOF ;
     public final EObject entryRuleActionChart() throws RecognitionException {
         EObject current = null;
 
@@ -2342,13 +2469,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:818:2: (iv_ruleActionChart= ruleActionChart EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:819:2: iv_ruleActionChart= ruleActionChart EOF
+            // InternalActionDSL.g:876:52: (iv_ruleActionChart= ruleActionChart EOF )
+            // InternalActionDSL.g:877:2: iv_ruleActionChart= ruleActionChart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionChartRule()); 
             }
-            pushFollow(FOLLOW_ruleActionChart_in_entryRuleActionChart1790);
+            pushFollow(FOLLOW_1);
             iv_ruleActionChart=ruleActionChart();
 
             state._fsp--;
@@ -2356,16 +2483,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionChart; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionChart1800); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2374,7 +2501,7 @@
 
 
     // $ANTLR start "ruleActionChart"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:826:1: ruleActionChart returns [EObject current=null] : (otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) ) ) ;
+    // InternalActionDSL.g:883:1: ruleActionChart returns [EObject current=null] : (otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) ) ) ;
     public final EObject ruleActionChart() throws RecognitionException {
         EObject current = null;
 
@@ -2382,49 +2509,50 @@
         Enumerator lv_action_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:829:28: ( (otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:830:1: (otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) ) )
+            // InternalActionDSL.g:889:2: ( (otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) ) ) )
+            // InternalActionDSL.g:890:2: (otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:830:1: (otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:830:3: otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) )
+            // InternalActionDSL.g:890:2: (otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) ) )
+            // InternalActionDSL.g:891:3: otherlv_0= 'chartAction' ( (lv_action_1_0= ruleChartActionEnum ) )
             {
-            otherlv_0=(Token)match(input,29,FOLLOW_29_in_ruleActionChart1837); if (state.failed) return current;
+            otherlv_0=(Token)match(input,27,FOLLOW_21); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getActionChartAccess().getChartActionKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getActionChartAccess().getChartActionKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:834:1: ( (lv_action_1_0= ruleChartActionEnum ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:835:1: (lv_action_1_0= ruleChartActionEnum )
+            // InternalActionDSL.g:895:3: ( (lv_action_1_0= ruleChartActionEnum ) )
+            // InternalActionDSL.g:896:4: (lv_action_1_0= ruleChartActionEnum )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:835:1: (lv_action_1_0= ruleChartActionEnum )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:836:3: lv_action_1_0= ruleChartActionEnum
+            // InternalActionDSL.g:896:4: (lv_action_1_0= ruleChartActionEnum )
+            // InternalActionDSL.g:897:5: lv_action_1_0= ruleChartActionEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionChartAccess().getActionChartActionEnumEnumRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getActionChartAccess().getActionChartActionEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleChartActionEnum_in_ruleActionChart1858);
+            pushFollow(FOLLOW_2);
             lv_action_1_0=ruleChartActionEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionChartRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"action",
-                      		lv_action_1_0, 
-                      		"ChartActionEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionChartRule());
+              					}
+              					set(
+              						current,
+              						"action",
+              						lv_action_1_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.ChartActionEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2439,14 +2567,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2455,7 +2585,7 @@
 
 
     // $ANTLR start "entryRuleActionWorkflow"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:860:1: entryRuleActionWorkflow returns [EObject current=null] : iv_ruleActionWorkflow= ruleActionWorkflow EOF ;
+    // InternalActionDSL.g:918:1: entryRuleActionWorkflow returns [EObject current=null] : iv_ruleActionWorkflow= ruleActionWorkflow EOF ;
     public final EObject entryRuleActionWorkflow() throws RecognitionException {
         EObject current = null;
 
@@ -2463,13 +2593,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:861:2: (iv_ruleActionWorkflow= ruleActionWorkflow EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:862:2: iv_ruleActionWorkflow= ruleActionWorkflow EOF
+            // InternalActionDSL.g:918:55: (iv_ruleActionWorkflow= ruleActionWorkflow EOF )
+            // InternalActionDSL.g:919:2: iv_ruleActionWorkflow= ruleActionWorkflow EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionWorkflowRule()); 
             }
-            pushFollow(FOLLOW_ruleActionWorkflow_in_entryRuleActionWorkflow1894);
+            pushFollow(FOLLOW_1);
             iv_ruleActionWorkflow=ruleActionWorkflow();
 
             state._fsp--;
@@ -2477,16 +2607,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionWorkflow; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionWorkflow1904); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2495,7 +2625,7 @@
 
 
     // $ANTLR start "ruleActionWorkflow"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:869:1: ruleActionWorkflow returns [EObject current=null] : (otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) ) ) ;
+    // InternalActionDSL.g:925:1: ruleActionWorkflow returns [EObject current=null] : (otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) ) ) ;
     public final EObject ruleActionWorkflow() throws RecognitionException {
         EObject current = null;
 
@@ -2503,49 +2633,50 @@
         Enumerator lv_action_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:872:28: ( (otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:873:1: (otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) ) )
+            // InternalActionDSL.g:931:2: ( (otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) ) ) )
+            // InternalActionDSL.g:932:2: (otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:873:1: (otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:873:3: otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) )
+            // InternalActionDSL.g:932:2: (otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) ) )
+            // InternalActionDSL.g:933:3: otherlv_0= 'workflowAction' ( (lv_action_1_0= ruleWorkflowActionEnum ) )
             {
-            otherlv_0=(Token)match(input,30,FOLLOW_30_in_ruleActionWorkflow1941); if (state.failed) return current;
+            otherlv_0=(Token)match(input,28,FOLLOW_22); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getActionWorkflowAccess().getWorkflowActionKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getActionWorkflowAccess().getWorkflowActionKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:877:1: ( (lv_action_1_0= ruleWorkflowActionEnum ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:878:1: (lv_action_1_0= ruleWorkflowActionEnum )
+            // InternalActionDSL.g:937:3: ( (lv_action_1_0= ruleWorkflowActionEnum ) )
+            // InternalActionDSL.g:938:4: (lv_action_1_0= ruleWorkflowActionEnum )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:878:1: (lv_action_1_0= ruleWorkflowActionEnum )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:879:3: lv_action_1_0= ruleWorkflowActionEnum
+            // InternalActionDSL.g:938:4: (lv_action_1_0= ruleWorkflowActionEnum )
+            // InternalActionDSL.g:939:5: lv_action_1_0= ruleWorkflowActionEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionWorkflowAccess().getActionWorkflowActionEnumEnumRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getActionWorkflowAccess().getActionWorkflowActionEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleWorkflowActionEnum_in_ruleActionWorkflow1962);
+            pushFollow(FOLLOW_2);
             lv_action_1_0=ruleWorkflowActionEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionWorkflowRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"action",
-                      		lv_action_1_0, 
-                      		"WorkflowActionEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionWorkflowRule());
+              					}
+              					set(
+              						current,
+              						"action",
+              						lv_action_1_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.WorkflowActionEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2560,14 +2691,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2576,7 +2709,7 @@
 
 
     // $ANTLR start "entryRuleActionDatainterchange"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:903:1: entryRuleActionDatainterchange returns [EObject current=null] : iv_ruleActionDatainterchange= ruleActionDatainterchange EOF ;
+    // InternalActionDSL.g:960:1: entryRuleActionDatainterchange returns [EObject current=null] : iv_ruleActionDatainterchange= ruleActionDatainterchange EOF ;
     public final EObject entryRuleActionDatainterchange() throws RecognitionException {
         EObject current = null;
 
@@ -2584,13 +2717,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:904:2: (iv_ruleActionDatainterchange= ruleActionDatainterchange EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:905:2: iv_ruleActionDatainterchange= ruleActionDatainterchange EOF
+            // InternalActionDSL.g:960:62: (iv_ruleActionDatainterchange= ruleActionDatainterchange EOF )
+            // InternalActionDSL.g:961:2: iv_ruleActionDatainterchange= ruleActionDatainterchange EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getActionDatainterchangeRule()); 
             }
-            pushFollow(FOLLOW_ruleActionDatainterchange_in_entryRuleActionDatainterchange1998);
+            pushFollow(FOLLOW_1);
             iv_ruleActionDatainterchange=ruleActionDatainterchange();
 
             state._fsp--;
@@ -2598,16 +2731,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleActionDatainterchange; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionDatainterchange2008); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2616,7 +2749,7 @@
 
 
     // $ANTLR start "ruleActionDatainterchange"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:912:1: ruleActionDatainterchange returns [EObject current=null] : (otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) ) ) ;
+    // InternalActionDSL.g:967:1: ruleActionDatainterchange returns [EObject current=null] : (otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) ) ) ;
     public final EObject ruleActionDatainterchange() throws RecognitionException {
         EObject current = null;
 
@@ -2625,49 +2758,50 @@
         Enumerator lv_action_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:915:28: ( (otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:916:1: (otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) ) )
+            // InternalActionDSL.g:973:2: ( (otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) ) ) )
+            // InternalActionDSL.g:974:2: (otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:916:1: (otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:916:3: otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) )
+            // InternalActionDSL.g:974:2: (otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) ) )
+            // InternalActionDSL.g:975:3: otherlv_0= 'datainterchangeAction' ( (lv_action_1_0= ruleDatainterchangeActionEnum ) ) ( (otherlv_2= RULE_ID ) )
             {
-            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleActionDatainterchange2045); if (state.failed) return current;
+            otherlv_0=(Token)match(input,29,FOLLOW_23); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getActionDatainterchangeAccess().getDatainterchangeActionKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getActionDatainterchangeAccess().getDatainterchangeActionKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:920:1: ( (lv_action_1_0= ruleDatainterchangeActionEnum ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:921:1: (lv_action_1_0= ruleDatainterchangeActionEnum )
+            // InternalActionDSL.g:979:3: ( (lv_action_1_0= ruleDatainterchangeActionEnum ) )
+            // InternalActionDSL.g:980:4: (lv_action_1_0= ruleDatainterchangeActionEnum )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:921:1: (lv_action_1_0= ruleDatainterchangeActionEnum )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:922:3: lv_action_1_0= ruleDatainterchangeActionEnum
+            // InternalActionDSL.g:980:4: (lv_action_1_0= ruleDatainterchangeActionEnum )
+            // InternalActionDSL.g:981:5: lv_action_1_0= ruleDatainterchangeActionEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionDatainterchangeAccess().getActionDatainterchangeActionEnumEnumRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getActionDatainterchangeAccess().getActionDatainterchangeActionEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleDatainterchangeActionEnum_in_ruleActionDatainterchange2066);
+            pushFollow(FOLLOW_4);
             lv_action_1_0=ruleDatainterchangeActionEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionDatainterchangeRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"action",
-                      		lv_action_1_0, 
-                      		"DatainterchangeActionEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionDatainterchangeRule());
+              					}
+              					set(
+              						current,
+              						"action",
+              						lv_action_1_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.DatainterchangeActionEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2675,24 +2809,24 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:938:2: ( (otherlv_2= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:939:1: (otherlv_2= RULE_ID )
+            // InternalActionDSL.g:998:3: ( (otherlv_2= RULE_ID ) )
+            // InternalActionDSL.g:999:4: (otherlv_2= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:939:1: (otherlv_2= RULE_ID )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:940:3: otherlv_2= RULE_ID
+            // InternalActionDSL.g:999:4: (otherlv_2= RULE_ID )
+            // InternalActionDSL.g:1000:5: otherlv_2= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getActionDatainterchangeRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getActionDatainterchangeRule());
+              					}
+              				
             }
-            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleActionDatainterchange2086); if (state.failed) return current;
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_2, grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeCrossReference_2_0()); 
-              	
+              					newLeafNode(otherlv_2, grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeCrossReference_2_0());
+              				
             }
 
             }
@@ -2707,14 +2841,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2722,213 +2858,235 @@
     // $ANTLR end "ruleActionDatainterchange"
 
 
-    // $ANTLR start "entryRuleActionGeneric"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:959:1: entryRuleActionGeneric returns [EObject current=null] : iv_ruleActionGeneric= ruleActionGeneric EOF ;
-    public final EObject entryRuleActionGeneric() throws RecognitionException {
+    // $ANTLR start "entryRuleActionUI"
+    // InternalActionDSL.g:1015:1: entryRuleActionUI returns [EObject current=null] : iv_ruleActionUI= ruleActionUI EOF ;
+    public final EObject entryRuleActionUI() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleActionGeneric = null;
+        EObject iv_ruleActionUI = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:960:2: (iv_ruleActionGeneric= ruleActionGeneric EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:961:2: iv_ruleActionGeneric= ruleActionGeneric EOF
+            // InternalActionDSL.g:1015:49: (iv_ruleActionUI= ruleActionUI EOF )
+            // InternalActionDSL.g:1016:2: iv_ruleActionUI= ruleActionUI EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getActionGenericRule()); 
+               newCompositeNode(grammarAccess.getActionUIRule()); 
             }
-            pushFollow(FOLLOW_ruleActionGeneric_in_entryRuleActionGeneric2122);
-            iv_ruleActionGeneric=ruleActionGeneric();
+            pushFollow(FOLLOW_1);
+            iv_ruleActionUI=ruleActionUI();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleActionGeneric; 
+               current =iv_ruleActionUI; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionGeneric2132); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "entryRuleActionGeneric"
+    // $ANTLR end "entryRuleActionUI"
 
 
-    // $ANTLR start "ruleActionGeneric"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:968:1: ruleActionGeneric returns [EObject current=null] : (otherlv_0= 'genericAction' ( (lv_action_1_0= RULE_STRING ) ) ) ;
-    public final EObject ruleActionGeneric() throws RecognitionException {
+    // $ANTLR start "ruleActionUI"
+    // InternalActionDSL.g:1022:1: ruleActionUI returns [EObject current=null] : (otherlv_0= 'userinterfaceAction' ( (lv_action_1_0= ruleUIActionEnum ) ) ) ;
+    public final EObject ruleActionUI() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_0=null;
-        Token lv_action_1_0=null;
+        Enumerator lv_action_1_0 = null;
 
-         enterRule(); 
-            
+
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:971:28: ( (otherlv_0= 'genericAction' ( (lv_action_1_0= RULE_STRING ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:972:1: (otherlv_0= 'genericAction' ( (lv_action_1_0= RULE_STRING ) ) )
+            // InternalActionDSL.g:1028:2: ( (otherlv_0= 'userinterfaceAction' ( (lv_action_1_0= ruleUIActionEnum ) ) ) )
+            // InternalActionDSL.g:1029:2: (otherlv_0= 'userinterfaceAction' ( (lv_action_1_0= ruleUIActionEnum ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:972:1: (otherlv_0= 'genericAction' ( (lv_action_1_0= RULE_STRING ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:972:3: otherlv_0= 'genericAction' ( (lv_action_1_0= RULE_STRING ) )
+            // InternalActionDSL.g:1029:2: (otherlv_0= 'userinterfaceAction' ( (lv_action_1_0= ruleUIActionEnum ) ) )
+            // InternalActionDSL.g:1030:3: otherlv_0= 'userinterfaceAction' ( (lv_action_1_0= ruleUIActionEnum ) )
             {
-            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleActionGeneric2169); if (state.failed) return current;
+            otherlv_0=(Token)match(input,30,FOLLOW_24); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getActionGenericAccess().getGenericActionKeyword_0());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:976:1: ( (lv_action_1_0= RULE_STRING ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:977:1: (lv_action_1_0= RULE_STRING )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:977:1: (lv_action_1_0= RULE_STRING )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:978:3: lv_action_1_0= RULE_STRING
-            {
-            lv_action_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleActionGeneric2186); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(lv_action_1_0, grammarAccess.getActionGenericAccess().getActionSTRINGTerminalRuleCall_1_0()); 
+              			newLeafNode(otherlv_0, grammarAccess.getActionUIAccess().getUserinterfaceActionKeyword_0());
               		
             }
-            if ( state.backtracking==0 ) {
-
-              	        if (current==null) {
-              	            current = createModelElement(grammarAccess.getActionGenericRule());
-              	        }
-                     		setWithLastConsumed(
-                     			current, 
-                     			"action",
-                      		lv_action_1_0, 
-                      		"STRING");
-              	    
-            }
-
-            }
-
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleActionGeneric"
-
-
-    // $ANTLR start "entryRuleActionImport"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1004:1: entryRuleActionImport returns [EObject current=null] : iv_ruleActionImport= ruleActionImport EOF ;
-    public final EObject entryRuleActionImport() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleActionImport = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1005:2: (iv_ruleActionImport= ruleActionImport EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1006:2: iv_ruleActionImport= ruleActionImport EOF
+            // InternalActionDSL.g:1034:3: ( (lv_action_1_0= ruleUIActionEnum ) )
+            // InternalActionDSL.g:1035:4: (lv_action_1_0= ruleUIActionEnum )
+            {
+            // InternalActionDSL.g:1035:4: (lv_action_1_0= ruleUIActionEnum )
+            // InternalActionDSL.g:1036:5: lv_action_1_0= ruleUIActionEnum
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getActionImportRule()); 
+
+              					newCompositeNode(grammarAccess.getActionUIAccess().getActionUIActionEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleActionImport_in_entryRuleActionImport2229);
-            iv_ruleActionImport=ruleActionImport();
+            pushFollow(FOLLOW_2);
+            lv_action_1_0=ruleUIActionEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleActionImport; 
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getActionUIRule());
+              					}
+              					set(
+              						current,
+              						"action",
+              						lv_action_1_0,
+              						"org.eclipse.osbp.xtext.action.ActionDSL.UIActionEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionImport2239); if (state.failed) return current;
 
             }
 
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "entryRuleActionImport"
+    // $ANTLR end "ruleActionUI"
 
 
-    // $ANTLR start "ruleActionImport"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1013:1: ruleActionImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleActionQualifiedNameWithWildCard ) ) ) ;
-    public final EObject ruleActionImport() throws RecognitionException {
+    // $ANTLR start "entryRuleActionFunction"
+    // InternalActionDSL.g:1057:1: entryRuleActionFunction returns [EObject current=null] : iv_ruleActionFunction= ruleActionFunction EOF ;
+    public final EObject entryRuleActionFunction() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleActionFunction = null;
+
+
+        try {
+            // InternalActionDSL.g:1057:55: (iv_ruleActionFunction= ruleActionFunction EOF )
+            // InternalActionDSL.g:1058:2: iv_ruleActionFunction= ruleActionFunction EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getActionFunctionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleActionFunction=ruleActionFunction();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleActionFunction; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleActionFunction"
+
+
+    // $ANTLR start "ruleActionFunction"
+    // InternalActionDSL.g:1064:1: ruleActionFunction returns [EObject current=null] : (otherlv_0= 'functionalAction' otherlv_1= 'group' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'canExecute' ( (otherlv_4= RULE_ID ) ) ( ( ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) ) ( (otherlv_6= RULE_ID ) ) ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )? ) | ( ( (lv_hasExecuteLater_13_0= 'executeLater' ) ) ( (otherlv_14= RULE_ID ) ) ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )? ) ) ) ;
+    public final EObject ruleActionFunction() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_0=null;
-        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token lv_hasExecuteImmediate_5_0=null;
+        Token otherlv_6=null;
+        Token lv_hasMessage_7_0=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token lv_hasSuccessMessage_11_0=null;
+        Token otherlv_12=null;
+        Token lv_hasExecuteLater_13_0=null;
+        Token otherlv_14=null;
+        Token lv_hasStartedMessage_15_0=null;
+        Token otherlv_16=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
 
 
-         enterRule(); 
-            
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1016:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleActionQualifiedNameWithWildCard ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1017:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleActionQualifiedNameWithWildCard ) ) )
+            // InternalActionDSL.g:1070:2: ( (otherlv_0= 'functionalAction' otherlv_1= 'group' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'canExecute' ( (otherlv_4= RULE_ID ) ) ( ( ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) ) ( (otherlv_6= RULE_ID ) ) ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )? ) | ( ( (lv_hasExecuteLater_13_0= 'executeLater' ) ) ( (otherlv_14= RULE_ID ) ) ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )? ) ) ) )
+            // InternalActionDSL.g:1071:2: (otherlv_0= 'functionalAction' otherlv_1= 'group' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'canExecute' ( (otherlv_4= RULE_ID ) ) ( ( ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) ) ( (otherlv_6= RULE_ID ) ) ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )? ) | ( ( (lv_hasExecuteLater_13_0= 'executeLater' ) ) ( (otherlv_14= RULE_ID ) ) ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )? ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1017:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleActionQualifiedNameWithWildCard ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1017:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleActionQualifiedNameWithWildCard ) )
+            // InternalActionDSL.g:1071:2: (otherlv_0= 'functionalAction' otherlv_1= 'group' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'canExecute' ( (otherlv_4= RULE_ID ) ) ( ( ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) ) ( (otherlv_6= RULE_ID ) ) ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )? ) | ( ( (lv_hasExecuteLater_13_0= 'executeLater' ) ) ( (otherlv_14= RULE_ID ) ) ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )? ) ) )
+            // InternalActionDSL.g:1072:3: otherlv_0= 'functionalAction' otherlv_1= 'group' ( (otherlv_2= RULE_ID ) ) otherlv_3= 'canExecute' ( (otherlv_4= RULE_ID ) ) ( ( ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) ) ( (otherlv_6= RULE_ID ) ) ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )? ) | ( ( (lv_hasExecuteLater_13_0= 'executeLater' ) ) ( (otherlv_14= RULE_ID ) ) ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )? ) )
             {
-            otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleActionImport2276); if (state.failed) return current;
+            otherlv_0=(Token)match(input,31,FOLLOW_25); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getActionImportAccess().getImportKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getActionFunctionAccess().getFunctionalActionKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1021:1: ( (lv_importedNamespace_1_0= ruleActionQualifiedNameWithWildCard ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1022:1: (lv_importedNamespace_1_0= ruleActionQualifiedNameWithWildCard )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1022:1: (lv_importedNamespace_1_0= ruleActionQualifiedNameWithWildCard )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1023:3: lv_importedNamespace_1_0= ruleActionQualifiedNameWithWildCard
-            {
-            if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getActionImportAccess().getImportedNamespaceActionQualifiedNameWithWildCardParserRuleCall_1_0()); 
-              	    
-            }
-            pushFollow(FOLLOW_ruleActionQualifiedNameWithWildCard_in_ruleActionImport2297);
-            lv_importedNamespace_1_0=ruleActionQualifiedNameWithWildCard();
-
-            state._fsp--;
-            if (state.failed) return current;
+            otherlv_1=(Token)match(input,32,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getActionImportRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"importedNamespace",
-                      		lv_importedNamespace_1_0, 
-                      		"ActionQualifiedNameWithWildCard");
-              	        afterParserOrEnumRuleCall();
-              	    
+              			newLeafNode(otherlv_1, grammarAccess.getActionFunctionAccess().getGroupKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:1080:3: ( (otherlv_2= RULE_ID ) )
+            // InternalActionDSL.g:1081:4: (otherlv_2= RULE_ID )
+            {
+            // InternalActionDSL.g:1081:4: (otherlv_2= RULE_ID )
+            // InternalActionDSL.g:1082:5: otherlv_2= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getActionFunctionRule());
+              					}
+              				
+            }
+            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_26); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getActionFunctionAccess().getActionGroupFunctionLibraryActionGroupCrossReference_2_0());
+              				
             }
 
             }
@@ -2936,6 +3094,450 @@
 
             }
 
+            otherlv_3=(Token)match(input,33,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_3, grammarAccess.getActionFunctionAccess().getCanExecuteKeyword_3());
+              		
+            }
+            // InternalActionDSL.g:1097:3: ( (otherlv_4= RULE_ID ) )
+            // InternalActionDSL.g:1098:4: (otherlv_4= RULE_ID )
+            {
+            // InternalActionDSL.g:1098:4: (otherlv_4= RULE_ID )
+            // InternalActionDSL.g:1099:5: otherlv_4= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getActionFunctionRule());
+              					}
+              				
+            }
+            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_27); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_4, grammarAccess.getActionFunctionAccess().getCanExecuteFunctionLibraryCanExecuteCrossReference_4_0());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:1110:3: ( ( ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) ) ( (otherlv_6= RULE_ID ) ) ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )? ) | ( ( (lv_hasExecuteLater_13_0= 'executeLater' ) ) ( (otherlv_14= RULE_ID ) ) ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )? ) )
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==34) ) {
+                alt17=1;
+            }
+            else if ( (LA17_0==38) ) {
+                alt17=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 17, 0, input);
+
+                throw nvae;
+            }
+            switch (alt17) {
+                case 1 :
+                    // InternalActionDSL.g:1111:4: ( ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) ) ( (otherlv_6= RULE_ID ) ) ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )? )
+                    {
+                    // InternalActionDSL.g:1111:4: ( ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) ) ( (otherlv_6= RULE_ID ) ) ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )? )
+                    // InternalActionDSL.g:1112:5: ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) ) ( (otherlv_6= RULE_ID ) ) ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )?
+                    {
+                    // InternalActionDSL.g:1112:5: ( (lv_hasExecuteImmediate_5_0= 'executeImmediate' ) )
+                    // InternalActionDSL.g:1113:6: (lv_hasExecuteImmediate_5_0= 'executeImmediate' )
+                    {
+                    // InternalActionDSL.g:1113:6: (lv_hasExecuteImmediate_5_0= 'executeImmediate' )
+                    // InternalActionDSL.g:1114:7: lv_hasExecuteImmediate_5_0= 'executeImmediate'
+                    {
+                    lv_hasExecuteImmediate_5_0=(Token)match(input,34,FOLLOW_4); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(lv_hasExecuteImmediate_5_0, grammarAccess.getActionFunctionAccess().getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0());
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getActionFunctionRule());
+                      							}
+                      							setWithLastConsumed(current, "hasExecuteImmediate", true, "executeImmediate");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:1126:5: ( (otherlv_6= RULE_ID ) )
+                    // InternalActionDSL.g:1127:6: (otherlv_6= RULE_ID )
+                    {
+                    // InternalActionDSL.g:1127:6: (otherlv_6= RULE_ID )
+                    // InternalActionDSL.g:1128:7: otherlv_6= RULE_ID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getActionFunctionRule());
+                      							}
+                      						
+                    }
+                    otherlv_6=(Token)match(input,RULE_ID,FOLLOW_28); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_6, grammarAccess.getActionFunctionAccess().getExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0());
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:1139:5: ( ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )? )?
+                    int alt15=2;
+                    int LA15_0 = input.LA(1);
+
+                    if ( (LA15_0==35) ) {
+                        alt15=1;
+                    }
+                    switch (alt15) {
+                        case 1 :
+                            // InternalActionDSL.g:1140:6: ( (lv_hasMessage_7_0= 'messageCategory' ) ) ( (otherlv_8= RULE_ID ) ) otherlv_9= 'onFailMessage' ( (otherlv_10= RULE_ID ) ) ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )?
+                            {
+                            // InternalActionDSL.g:1140:6: ( (lv_hasMessage_7_0= 'messageCategory' ) )
+                            // InternalActionDSL.g:1141:7: (lv_hasMessage_7_0= 'messageCategory' )
+                            {
+                            // InternalActionDSL.g:1141:7: (lv_hasMessage_7_0= 'messageCategory' )
+                            // InternalActionDSL.g:1142:8: lv_hasMessage_7_0= 'messageCategory'
+                            {
+                            lv_hasMessage_7_0=(Token)match(input,35,FOLLOW_4); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								newLeafNode(lv_hasMessage_7_0, grammarAccess.getActionFunctionAccess().getHasMessageMessageCategoryKeyword_5_0_2_0_0());
+                              							
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElement(grammarAccess.getActionFunctionRule());
+                              								}
+                              								setWithLastConsumed(current, "hasMessage", true, "messageCategory");
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalActionDSL.g:1154:6: ( (otherlv_8= RULE_ID ) )
+                            // InternalActionDSL.g:1155:7: (otherlv_8= RULE_ID )
+                            {
+                            // InternalActionDSL.g:1155:7: (otherlv_8= RULE_ID )
+                            // InternalActionDSL.g:1156:8: otherlv_8= RULE_ID
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElement(grammarAccess.getActionFunctionRule());
+                              								}
+                              							
+                            }
+                            otherlv_8=(Token)match(input,RULE_ID,FOLLOW_29); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								newLeafNode(otherlv_8, grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_0_2_1_0());
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            otherlv_9=(Token)match(input,36,FOLLOW_4); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              						newLeafNode(otherlv_9, grammarAccess.getActionFunctionAccess().getOnFailMessageKeyword_5_0_2_2());
+                              					
+                            }
+                            // InternalActionDSL.g:1171:6: ( (otherlv_10= RULE_ID ) )
+                            // InternalActionDSL.g:1172:7: (otherlv_10= RULE_ID )
+                            {
+                            // InternalActionDSL.g:1172:7: (otherlv_10= RULE_ID )
+                            // InternalActionDSL.g:1173:8: otherlv_10= RULE_ID
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElement(grammarAccess.getActionFunctionRule());
+                              								}
+                              							
+                            }
+                            otherlv_10=(Token)match(input,RULE_ID,FOLLOW_30); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								newLeafNode(otherlv_10, grammarAccess.getActionFunctionAccess().getOnFailMessageMessageItemCrossReference_5_0_2_3_0());
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalActionDSL.g:1184:6: ( ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) ) )?
+                            int alt14=2;
+                            int LA14_0 = input.LA(1);
+
+                            if ( (LA14_0==37) ) {
+                                alt14=1;
+                            }
+                            switch (alt14) {
+                                case 1 :
+                                    // InternalActionDSL.g:1185:7: ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) ) ( (otherlv_12= RULE_ID ) )
+                                    {
+                                    // InternalActionDSL.g:1185:7: ( (lv_hasSuccessMessage_11_0= 'onSuccessMessage' ) )
+                                    // InternalActionDSL.g:1186:8: (lv_hasSuccessMessage_11_0= 'onSuccessMessage' )
+                                    {
+                                    // InternalActionDSL.g:1186:8: (lv_hasSuccessMessage_11_0= 'onSuccessMessage' )
+                                    // InternalActionDSL.g:1187:9: lv_hasSuccessMessage_11_0= 'onSuccessMessage'
+                                    {
+                                    lv_hasSuccessMessage_11_0=(Token)match(input,37,FOLLOW_4); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                      									newLeafNode(lv_hasSuccessMessage_11_0, grammarAccess.getActionFunctionAccess().getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0());
+                                      								
+                                    }
+                                    if ( state.backtracking==0 ) {
+
+                                      									if (current==null) {
+                                      										current = createModelElement(grammarAccess.getActionFunctionRule());
+                                      									}
+                                      									setWithLastConsumed(current, "hasSuccessMessage", true, "onSuccessMessage");
+                                      								
+                                    }
+
+                                    }
+
+
+                                    }
+
+                                    // InternalActionDSL.g:1199:7: ( (otherlv_12= RULE_ID ) )
+                                    // InternalActionDSL.g:1200:8: (otherlv_12= RULE_ID )
+                                    {
+                                    // InternalActionDSL.g:1200:8: (otherlv_12= RULE_ID )
+                                    // InternalActionDSL.g:1201:9: otherlv_12= RULE_ID
+                                    {
+                                    if ( state.backtracking==0 ) {
+
+                                      									if (current==null) {
+                                      										current = createModelElement(grammarAccess.getActionFunctionRule());
+                                      									}
+                                      								
+                                    }
+                                    otherlv_12=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                      									newLeafNode(otherlv_12, grammarAccess.getActionFunctionAccess().getOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0());
+                                      								
+                                    }
+
+                                    }
+
+
+                                    }
+
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:1216:4: ( ( (lv_hasExecuteLater_13_0= 'executeLater' ) ) ( (otherlv_14= RULE_ID ) ) ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )? )
+                    {
+                    // InternalActionDSL.g:1216:4: ( ( (lv_hasExecuteLater_13_0= 'executeLater' ) ) ( (otherlv_14= RULE_ID ) ) ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )? )
+                    // InternalActionDSL.g:1217:5: ( (lv_hasExecuteLater_13_0= 'executeLater' ) ) ( (otherlv_14= RULE_ID ) ) ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )?
+                    {
+                    // InternalActionDSL.g:1217:5: ( (lv_hasExecuteLater_13_0= 'executeLater' ) )
+                    // InternalActionDSL.g:1218:6: (lv_hasExecuteLater_13_0= 'executeLater' )
+                    {
+                    // InternalActionDSL.g:1218:6: (lv_hasExecuteLater_13_0= 'executeLater' )
+                    // InternalActionDSL.g:1219:7: lv_hasExecuteLater_13_0= 'executeLater'
+                    {
+                    lv_hasExecuteLater_13_0=(Token)match(input,38,FOLLOW_4); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(lv_hasExecuteLater_13_0, grammarAccess.getActionFunctionAccess().getHasExecuteLaterExecuteLaterKeyword_5_1_0_0());
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getActionFunctionRule());
+                      							}
+                      							setWithLastConsumed(current, "hasExecuteLater", true, "executeLater");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:1231:5: ( (otherlv_14= RULE_ID ) )
+                    // InternalActionDSL.g:1232:6: (otherlv_14= RULE_ID )
+                    {
+                    // InternalActionDSL.g:1232:6: (otherlv_14= RULE_ID )
+                    // InternalActionDSL.g:1233:7: otherlv_14= RULE_ID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getActionFunctionRule());
+                      							}
+                      						
+                    }
+                    otherlv_14=(Token)match(input,RULE_ID,FOLLOW_28); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_14, grammarAccess.getActionFunctionAccess().getExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0());
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:1244:5: ( ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) ) )?
+                    int alt16=2;
+                    int LA16_0 = input.LA(1);
+
+                    if ( (LA16_0==35) ) {
+                        alt16=1;
+                    }
+                    switch (alt16) {
+                        case 1 :
+                            // InternalActionDSL.g:1245:6: ( (lv_hasStartedMessage_15_0= 'messageCategory' ) ) ( (otherlv_16= RULE_ID ) ) otherlv_17= 'onStartedMessage' ( (otherlv_18= RULE_ID ) )
+                            {
+                            // InternalActionDSL.g:1245:6: ( (lv_hasStartedMessage_15_0= 'messageCategory' ) )
+                            // InternalActionDSL.g:1246:7: (lv_hasStartedMessage_15_0= 'messageCategory' )
+                            {
+                            // InternalActionDSL.g:1246:7: (lv_hasStartedMessage_15_0= 'messageCategory' )
+                            // InternalActionDSL.g:1247:8: lv_hasStartedMessage_15_0= 'messageCategory'
+                            {
+                            lv_hasStartedMessage_15_0=(Token)match(input,35,FOLLOW_4); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								newLeafNode(lv_hasStartedMessage_15_0, grammarAccess.getActionFunctionAccess().getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0());
+                              							
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElement(grammarAccess.getActionFunctionRule());
+                              								}
+                              								setWithLastConsumed(current, "hasStartedMessage", true, "messageCategory");
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalActionDSL.g:1259:6: ( (otherlv_16= RULE_ID ) )
+                            // InternalActionDSL.g:1260:7: (otherlv_16= RULE_ID )
+                            {
+                            // InternalActionDSL.g:1260:7: (otherlv_16= RULE_ID )
+                            // InternalActionDSL.g:1261:8: otherlv_16= RULE_ID
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElement(grammarAccess.getActionFunctionRule());
+                              								}
+                              							
+                            }
+                            otherlv_16=(Token)match(input,RULE_ID,FOLLOW_31); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								newLeafNode(otherlv_16, grammarAccess.getActionFunctionAccess().getMessageCategoryMessageCategoryCrossReference_5_1_2_1_0());
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            otherlv_17=(Token)match(input,39,FOLLOW_4); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              						newLeafNode(otherlv_17, grammarAccess.getActionFunctionAccess().getOnStartedMessageKeyword_5_1_2_2());
+                              					
+                            }
+                            // InternalActionDSL.g:1276:6: ( (otherlv_18= RULE_ID ) )
+                            // InternalActionDSL.g:1277:7: (otherlv_18= RULE_ID )
+                            {
+                            // InternalActionDSL.g:1277:7: (otherlv_18= RULE_ID )
+                            // InternalActionDSL.g:1278:8: otherlv_18= RULE_ID
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElement(grammarAccess.getActionFunctionRule());
+                              								}
+                              							
+                            }
+                            otherlv_18=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								newLeafNode(otherlv_18, grammarAccess.getActionFunctionAccess().getOnStartedMessageMessageItemCrossReference_5_1_2_3_0());
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
 
             }
 
@@ -2943,123 +3545,662 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleActionImport"
+    // $ANTLR end "ruleActionFunction"
 
 
-    // $ANTLR start "entryRuleActionQualifiedNameWithWildCard"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1049:1: entryRuleActionQualifiedNameWithWildCard returns [String current=null] : iv_ruleActionQualifiedNameWithWildCard= ruleActionQualifiedNameWithWildCard EOF ;
-    public final String entryRuleActionQualifiedNameWithWildCard() throws RecognitionException {
+    // $ANTLR start "entryRuleTRANSLATABLEID"
+    // InternalActionDSL.g:1296:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    public final String entryRuleTRANSLATABLEID() throws RecognitionException {
         String current = null;
 
-        AntlrDatatypeRuleToken iv_ruleActionQualifiedNameWithWildCard = null;
+        AntlrDatatypeRuleToken iv_ruleTRANSLATABLEID = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1050:2: (iv_ruleActionQualifiedNameWithWildCard= ruleActionQualifiedNameWithWildCard EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1051:2: iv_ruleActionQualifiedNameWithWildCard= ruleActionQualifiedNameWithWildCard EOF
+            // InternalActionDSL.g:1296:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // InternalActionDSL.g:1297:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getActionQualifiedNameWithWildCardRule()); 
+               newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
             }
-            pushFollow(FOLLOW_ruleActionQualifiedNameWithWildCard_in_entryRuleActionQualifiedNameWithWildCard2336);
-            iv_ruleActionQualifiedNameWithWildCard=ruleActionQualifiedNameWithWildCard();
+            pushFollow(FOLLOW_1);
+            iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleActionQualifiedNameWithWildCard.getText(); 
+               current =iv_ruleTRANSLATABLEID.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleActionQualifiedNameWithWildCard2347); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "entryRuleActionQualifiedNameWithWildCard"
+    // $ANTLR end "entryRuleTRANSLATABLEID"
 
 
-    // $ANTLR start "ruleActionQualifiedNameWithWildCard"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1058:1: ruleActionQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) ;
-    public final AntlrDatatypeRuleToken ruleActionQualifiedNameWithWildCard() throws RecognitionException {
+    // $ANTLR start "ruleTRANSLATABLEID"
+    // InternalActionDSL.g:1303:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    public final AntlrDatatypeRuleToken ruleTRANSLATABLEID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
-        Token kw=null;
-        AntlrDatatypeRuleToken this_QualifiedName_0 = null;
+        Token this_ID_0=null;
 
 
-         enterRule(); 
-            
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1061:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1062:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
+            // InternalActionDSL.g:1309:2: (this_ID_0= RULE_ID )
+            // InternalActionDSL.g:1310:2: this_ID_0= RULE_ID
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1062:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1063:5: this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )?
+            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_ID_0);
+              	
+            }
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall());
+              	
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTRANSLATABLEID"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLESTRING"
+    // InternalActionDSL.g:1320:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
+    public final String entryRuleTRANSLATABLESTRING() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleTRANSLATABLESTRING = null;
+
+
+        try {
+            // InternalActionDSL.g:1320:58: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
+            // InternalActionDSL.g:1321:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getActionQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
-                  
+               newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); 
             }
-            pushFollow(FOLLOW_ruleQualifiedName_in_ruleActionQualifiedNameWithWildCard2394);
-            this_QualifiedName_0=ruleQualifiedName();
+            pushFollow(FOLLOW_1);
+            iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
+               current =iv_ruleTRANSLATABLESTRING.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
-              		current.merge(this_QualifiedName_0);
-                  
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "ruleTRANSLATABLESTRING"
+    // InternalActionDSL.g:1327:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
+    public final AntlrDatatypeRuleToken ruleTRANSLATABLESTRING() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_STRING_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:1333:2: (this_STRING_0= RULE_STRING )
+            // InternalActionDSL.g:1334:2: this_STRING_0= RULE_STRING
+            {
+            this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_STRING_0);
+              	
             }
             if ( state.backtracking==0 ) {
-               
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1073:1: (kw= '.' kw= '*' )?
-            int alt15=2;
-            int LA15_0 = input.LA(1);
 
-            if ( (LA15_0==34) ) {
-                alt15=1;
+              		newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall());
+              	
             }
-            switch (alt15) {
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "entryRuleXImportDeclaration"
+    // InternalActionDSL.g:1344:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+    public final EObject entryRuleXImportDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXImportDeclaration = null;
+
+
+        try {
+            // InternalActionDSL.g:1344:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+            // InternalActionDSL.g:1345:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXImportDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXImportDeclaration=ruleXImportDeclaration();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXImportDeclaration; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXImportDeclaration"
+
+
+    // $ANTLR start "ruleXImportDeclaration"
+    // InternalActionDSL.g:1351:1: ruleXImportDeclaration returns [EObject current=null] : ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) ;
+    public final EObject ruleXImportDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_static_2_0=null;
+        Token lv_extension_3_0=null;
+        Token lv_wildcard_5_0=null;
+        Token lv_fqnImport_9_0=null;
+        Token otherlv_11=null;
+        AntlrDatatypeRuleToken lv_memberName_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_importedNamespace_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_importedFullyQualifiedName_10_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:1357:2: ( ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) )
+            // InternalActionDSL.g:1358:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
+            {
+            // InternalActionDSL.g:1358:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
+            // InternalActionDSL.g:1359:3: () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )?
+            {
+            // InternalActionDSL.g:1359:3: ()
+            // InternalActionDSL.g:1360:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,40,FOLLOW_32); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:1370:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )
+            int alt20=4;
+            alt20 = dfa20.predict(input);
+            switch (alt20) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1074:2: kw= '.' kw= '*'
+                    // InternalActionDSL.g:1371:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
                     {
-                    kw=(Token)match(input,34,FOLLOW_34_in_ruleActionQualifiedNameWithWildCard2413); if (state.failed) return current;
+                    // InternalActionDSL.g:1371:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalActionDSL.g:1372:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    {
+                    // InternalActionDSL.g:1372:5: ( (lv_static_2_0= 'static' ) )
+                    // InternalActionDSL.g:1373:6: (lv_static_2_0= 'static' )
+                    {
+                    // InternalActionDSL.g:1373:6: (lv_static_2_0= 'static' )
+                    // InternalActionDSL.g:1374:7: lv_static_2_0= 'static'
+                    {
+                    lv_static_2_0=(Token)match(input,41,FOLLOW_33); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getActionQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
-                          
+                      							newLeafNode(lv_static_2_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0());
+                      						
                     }
-                    kw=(Token)match(input,35,FOLLOW_35_in_ruleActionQualifiedNameWithWildCard2426); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getActionQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
-                          
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getXImportDeclarationRule());
+                      							}
+                      							setWithLastConsumed(current, "static", true, "static");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:1386:5: ( (lv_extension_3_0= 'extension' ) )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0==42) ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // InternalActionDSL.g:1387:6: (lv_extension_3_0= 'extension' )
+                            {
+                            // InternalActionDSL.g:1387:6: (lv_extension_3_0= 'extension' )
+                            // InternalActionDSL.g:1388:7: lv_extension_3_0= 'extension'
+                            {
+                            lv_extension_3_0=(Token)match(input,42,FOLLOW_33); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							newLeafNode(lv_extension_3_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0());
+                              						
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              							if (current==null) {
+                              								current = createModelElement(grammarAccess.getXImportDeclarationRule());
+                              							}
+                              							setWithLastConsumed(current, "extension", true, "extension");
+                              						
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalActionDSL.g:1400:5: ( ( ruleQualifiedNameInStaticImport ) )
+                    // InternalActionDSL.g:1401:6: ( ruleQualifiedNameInStaticImport )
+                    {
+                    // InternalActionDSL.g:1401:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalActionDSL.g:1402:7: ruleQualifiedNameInStaticImport
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getXImportDeclarationRule());
+                      							}
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_34);
+                    ruleQualifiedNameInStaticImport();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:1416:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    int alt19=2;
+                    int LA19_0 = input.LA(1);
+
+                    if ( (LA19_0==43) ) {
+                        alt19=1;
+                    }
+                    else if ( (LA19_0==RULE_ID) ) {
+                        alt19=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 19, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt19) {
+                        case 1 :
+                            // InternalActionDSL.g:1417:6: ( (lv_wildcard_5_0= '*' ) )
+                            {
+                            // InternalActionDSL.g:1417:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalActionDSL.g:1418:7: (lv_wildcard_5_0= '*' )
+                            {
+                            // InternalActionDSL.g:1418:7: (lv_wildcard_5_0= '*' )
+                            // InternalActionDSL.g:1419:8: lv_wildcard_5_0= '*'
+                            {
+                            lv_wildcard_5_0=(Token)match(input,43,FOLLOW_35); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								newLeafNode(lv_wildcard_5_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0());
+                              							
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElement(grammarAccess.getXImportDeclarationRule());
+                              								}
+                              								setWithLastConsumed(current, "wildcard", true, "*");
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // InternalActionDSL.g:1432:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            {
+                            // InternalActionDSL.g:1432:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalActionDSL.g:1433:7: (lv_memberName_6_0= ruleValidID )
+                            {
+                            // InternalActionDSL.g:1433:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalActionDSL.g:1434:8: lv_memberName_6_0= ruleValidID
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_35);
+                            lv_memberName_6_0=ruleValidID();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+                              								}
+                              								set(
+                              									current,
+                              									"memberName",
+                              									lv_memberName_6_0,
+                              									"org.eclipse.xtext.xbase.Xtype.ValidID");
+                              								afterParserOrEnumRuleCall();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:1454:4: ( ( ruleQualifiedName ) )
+                    {
+                    // InternalActionDSL.g:1454:4: ( ( ruleQualifiedName ) )
+                    // InternalActionDSL.g:1455:5: ( ruleQualifiedName )
+                    {
+                    // InternalActionDSL.g:1455:5: ( ruleQualifiedName )
+                    // InternalActionDSL.g:1456:6: ruleQualifiedName
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXImportDeclarationRule());
+                      						}
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_35);
+                    ruleQualifiedName();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:1471:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    {
+                    // InternalActionDSL.g:1471:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalActionDSL.g:1472:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    {
+                    // InternalActionDSL.g:1472:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalActionDSL.g:1473:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_35);
+                    lv_importedNamespace_8_0=ruleQualifiedNameWithWildcard();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+                      						}
+                      						set(
+                      							current,
+                      							"importedNamespace",
+                      							lv_importedNamespace_8_0,
+                      							"org.eclipse.xtext.xbase.Xtype.QualifiedNameWithWildcard");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:1491:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    {
+                    // InternalActionDSL.g:1491:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalActionDSL.g:1492:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    {
+                    // InternalActionDSL.g:1492:5: ( (lv_fqnImport_9_0= 'ns' ) )
+                    // InternalActionDSL.g:1493:6: (lv_fqnImport_9_0= 'ns' )
+                    {
+                    // InternalActionDSL.g:1493:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalActionDSL.g:1494:7: lv_fqnImport_9_0= 'ns'
+                    {
+                    lv_fqnImport_9_0=(Token)match(input,44,FOLLOW_4); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(lv_fqnImport_9_0, grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0());
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getXImportDeclarationRule());
+                      							}
+                      							setWithLastConsumed(current, "fqnImport", true, "ns");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:1506:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalActionDSL.g:1507:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    {
+                    // InternalActionDSL.g:1507:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalActionDSL.g:1508:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_35);
+                    lv_importedFullyQualifiedName_10_0=ruleQualifiedName();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+                      							}
+                      							set(
+                      								current,
+                      								"importedFullyQualifiedName",
+                      								lv_importedFullyQualifiedName_10_0,
+                      								"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:1527:3: (otherlv_11= ';' )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==45) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // InternalActionDSL.g:1528:4: otherlv_11= ';'
+                    {
+                    otherlv_11=(Token)match(input,45,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_11, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3());
+                      			
                     }
 
                     }
@@ -3074,443 +4215,25 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleActionQualifiedNameWithWildCard"
-
-
-    // $ANTLR start "entryRuleQualifiedName"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1093:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
-    public final String entryRuleQualifiedName() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1094:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1095:2: iv_ruleQualifiedName= ruleQualifiedName EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
-            }
-            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName2469);
-            iv_ruleQualifiedName=ruleQualifiedName();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleQualifiedName.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName2480); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleQualifiedName"
-
-
-    // $ANTLR start "ruleQualifiedName"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1102:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
-    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-        AntlrDatatypeRuleToken this_ValidID_0 = null;
-
-        AntlrDatatypeRuleToken this_ValidID_2 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1105:28: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1106:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1106:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1107:5: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName2527);
-            this_ValidID_0=ruleValidID();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              		current.merge(this_ValidID_0);
-                  
-            }
-            if ( state.backtracking==0 ) {
-               
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1117:1: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
-            loop16:
-            do {
-                int alt16=2;
-                int LA16_0 = input.LA(1);
-
-                if ( (LA16_0==34) ) {
-                    int LA16_2 = input.LA(2);
-
-                    if ( (LA16_2==RULE_ID) ) {
-                        int LA16_3 = input.LA(3);
-
-                        if ( (synpred1_InternalActionDSL()) ) {
-                            alt16=1;
-                        }
-
-
-                    }
-
-
-                }
-
-
-                switch (alt16) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1117:2: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1117:2: ( ( '.' )=>kw= '.' )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1117:3: ( '.' )=>kw= '.'
-            	    {
-            	    kw=(Token)match(input,34,FOLLOW_34_in_ruleQualifiedName2555); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	              current.merge(kw);
-            	              newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
-            	          
-            	    }
-
-            	    }
-
-            	    if ( state.backtracking==0 ) {
-            	       
-            	              newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
-            	          
-            	    }
-            	    pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName2578);
-            	    this_ValidID_2=ruleValidID();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      		current.merge(this_ValidID_2);
-            	          
-            	    }
-            	    if ( state.backtracking==0 ) {
-            	       
-            	              afterParserOrEnumRuleCall();
-            	          
-            	    }
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop16;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleQualifiedName"
-
-
-    // $ANTLR start "entryRuleValidID"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1144:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
-    public final String entryRuleValidID() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleValidID = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1145:2: (iv_ruleValidID= ruleValidID EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1146:2: iv_ruleValidID= ruleValidID EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getValidIDRule()); 
-            }
-            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID2626);
-            iv_ruleValidID=ruleValidID();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleValidID.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID2637); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleValidID"
-
-
-    // $ANTLR start "ruleValidID"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1153:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
-    public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token this_ID_0=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1156:28: (this_ID_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1157:5: this_ID_0= RULE_ID
-            {
-            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID2676); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              		current.merge(this_ID_0);
-                  
-            }
-            if ( state.backtracking==0 ) {
-               
-                  newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
-                  
-            }
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleValidID"
-
-
-    // $ANTLR start "entryRuleTRANSLATABLEID"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1172:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
-    public final String entryRuleTRANSLATABLEID() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleTRANSLATABLEID = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1173:2: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1174:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
-            }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID2721);
-            iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleTRANSLATABLEID.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLEID2732); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleTRANSLATABLEID"
-
-
-    // $ANTLR start "ruleTRANSLATABLEID"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1181:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
-    public final AntlrDatatypeRuleToken ruleTRANSLATABLEID() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token this_ID_0=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1184:28: (this_ID_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1185:5: this_ID_0= RULE_ID
-            {
-            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTRANSLATABLEID2771); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              		current.merge(this_ID_0);
-                  
-            }
-            if ( state.backtracking==0 ) {
-               
-                  newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
-                  
-            }
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleTRANSLATABLEID"
-
-
-    // $ANTLR start "entryRuleTRANSLATABLESTRING"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1200:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
-    public final String entryRuleTRANSLATABLESTRING() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleTRANSLATABLESTRING = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1201:2: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1202:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); 
-            }
-            pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING2816);
-            iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleTRANSLATABLESTRING.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING2827); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleTRANSLATABLESTRING"
-
-
-    // $ANTLR start "ruleTRANSLATABLESTRING"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1209:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
-    public final AntlrDatatypeRuleToken ruleTRANSLATABLESTRING() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token this_STRING_0=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1212:28: (this_STRING_0= RULE_STRING )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1213:5: this_STRING_0= RULE_STRING
-            {
-            this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING2866); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              		current.merge(this_STRING_0);
-                  
-            }
-            if ( state.backtracking==0 ) {
-               
-                  newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
-                  
-            }
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleTRANSLATABLESTRING"
+    // $ANTLR end "ruleXImportDeclaration"
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1228:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    // InternalActionDSL.g:1537:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
     public final EObject entryRuleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -3518,13 +4241,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1229:2: (iv_ruleXAnnotation= ruleXAnnotation EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1230:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            // InternalActionDSL.g:1537:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // InternalActionDSL.g:1538:2: iv_ruleXAnnotation= ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation2910);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotation=ruleXAnnotation();
 
             state._fsp--;
@@ -3532,16 +4255,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotation; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation2920); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3550,7 +4273,7 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1237:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
+    // InternalActionDSL.g:1544:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
     public final EObject ruleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -3565,61 +4288,62 @@
         EObject lv_value_7_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1240:28: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1241:1: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // InternalActionDSL.g:1550:2: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
+            // InternalActionDSL.g:1551:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1241:1: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1241:2: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            // InternalActionDSL.g:1551:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // InternalActionDSL.g:1552:3: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1241:2: ()
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1242:5: 
+            // InternalActionDSL.g:1552:3: ()
+            // InternalActionDSL.g:1553:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleXAnnotation2966); if (state.failed) return current;
+            otherlv_1=(Token)match(input,46,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1251:1: ( ( ruleQualifiedName ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1252:1: ( ruleQualifiedName )
+            // InternalActionDSL.g:1563:3: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:1564:4: ( ruleQualifiedName )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1252:1: ( ruleQualifiedName )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1253:3: ruleQualifiedName
+            // InternalActionDSL.g:1564:4: ( ruleQualifiedName )
+            // InternalActionDSL.g:1565:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getXAnnotationRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getXAnnotationRule());
+              					}
+              				
             }
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXAnnotation2989);
+            pushFollow(FOLLOW_36);
             ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -3627,67 +4351,67 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1266:2: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
-            int alt19=2;
-            int LA19_0 = input.LA(1);
+            // InternalActionDSL.g:1579:3: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
 
-            if ( (LA19_0==37) && (synpred2_InternalActionDSL())) {
-                alt19=1;
+            if ( (LA24_0==47) && (synpred1_InternalActionDSL())) {
+                alt24=1;
             }
-            switch (alt19) {
+            switch (alt24) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1266:3: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
+                    // InternalActionDSL.g:1580:4: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1266:3: ( ( '(' )=>otherlv_3= '(' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1266:4: ( '(' )=>otherlv_3= '('
+                    // InternalActionDSL.g:1580:4: ( ( '(' )=>otherlv_3= '(' )
+                    // InternalActionDSL.g:1581:5: ( '(' )=>otherlv_3= '('
                     {
-                    otherlv_3=(Token)match(input,37,FOLLOW_37_in_ruleXAnnotation3010); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,47,FOLLOW_37); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
-                          
+                      					newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
+                      				
                     }
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1271:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
-                    int alt18=3;
-                    alt18 = dfa18.predict(input);
-                    switch (alt18) {
+                    // InternalActionDSL.g:1587:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    int alt23=3;
+                    alt23 = dfa23.predict(input);
+                    switch (alt23) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1271:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalActionDSL.g:1588:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1271:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1271:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalActionDSL.g:1588:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalActionDSL.g:1589:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1271:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1271:5: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalActionDSL.g:1589:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // InternalActionDSL.g:1590:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1277:1: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1278:3: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            // InternalActionDSL.g:1599:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalActionDSL.g:1600:8: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
                             {
                             if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
-                              	    
+
+                              								newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0());
+                              							
                             }
-                            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation3054);
+                            pushFollow(FOLLOW_38);
                             lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair();
 
                             state._fsp--;
                             if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                              	        if (current==null) {
-                              	            current = createModelElementForParent(grammarAccess.getXAnnotationRule());
-                              	        }
-                                     		add(
-                                     			current, 
-                                     			"elementValuePairs",
-                                      		lv_elementValuePairs_4_0, 
-                                      		"XAnnotationElementValuePair");
-                              	        afterParserOrEnumRuleCall();
-                              	    
+                              								if (current==null) {
+                              									current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+                              								}
+                              								add(
+                              									current,
+                              									"elementValuePairs",
+                              									lv_elementValuePairs_4_0,
+                              									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValuePair");
+                              								afterParserOrEnumRuleCall();
+                              							
                             }
 
                             }
@@ -3695,55 +4419,55 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1294:2: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
-                            loop17:
+                            // InternalActionDSL.g:1617:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            loop22:
                             do {
-                                int alt17=2;
-                                int LA17_0 = input.LA(1);
+                                int alt22=2;
+                                int LA22_0 = input.LA(1);
 
-                                if ( (LA17_0==38) ) {
-                                    alt17=1;
+                                if ( (LA22_0==48) ) {
+                                    alt22=1;
                                 }
 
 
-                                switch (alt17) {
+                                switch (alt22) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1294:4: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalActionDSL.g:1618:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
                             	    {
-                            	    otherlv_5=(Token)match(input,38,FOLLOW_38_in_ruleXAnnotation3067); if (state.failed) return current;
+                            	    otherlv_5=(Token)match(input,48,FOLLOW_4); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
-                            	          	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
-                            	          
+                            	      							newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+                            	      						
                             	    }
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1298:1: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1298:2: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalActionDSL.g:1622:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalActionDSL.g:1623:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1304:1: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1305:3: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
+                            	    // InternalActionDSL.g:1632:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalActionDSL.g:1633:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
                             	    {
                             	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
-                            	      	    
+
+                            	      									newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0());
+                            	      								
                             	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation3108);
+                            	    pushFollow(FOLLOW_38);
                             	    lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair();
 
                             	    state._fsp--;
                             	    if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
-                            	      	        if (current==null) {
-                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationRule());
-                            	      	        }
-                            	             		add(
-                            	             			current, 
-                            	             			"elementValuePairs",
-                            	              		lv_elementValuePairs_6_0, 
-                            	              		"XAnnotationElementValuePair");
-                            	      	        afterParserOrEnumRuleCall();
-                            	      	    
+                            	      									if (current==null) {
+                            	      										current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+                            	      									}
+                            	      									add(
+                            	      										current,
+                            	      										"elementValuePairs",
+                            	      										lv_elementValuePairs_6_0,
+                            	      										"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValuePair");
+                            	      									afterParserOrEnumRuleCall();
+                            	      								
                             	    }
 
                             	    }
@@ -3756,7 +4480,7 @@
                             	    break;
 
                             	default :
-                            	    break loop17;
+                            	    break loop22;
                                 }
                             } while (true);
 
@@ -3767,36 +4491,36 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1322:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalActionDSL.g:1653:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1322:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1323:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalActionDSL.g:1653:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalActionDSL.g:1654:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1323:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1324:3: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            // InternalActionDSL.g:1654:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalActionDSL.g:1655:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
                             {
                             if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
-                              	    
+
+                              							newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0());
+                              						
                             }
-                            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_ruleXAnnotation3138);
+                            pushFollow(FOLLOW_39);
                             lv_value_7_0=ruleXAnnotationElementValueOrCommaList();
 
                             state._fsp--;
                             if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                              	        if (current==null) {
-                              	            current = createModelElementForParent(grammarAccess.getXAnnotationRule());
-                              	        }
-                                     		set(
-                                     			current, 
-                                     			"value",
-                                      		lv_value_7_0, 
-                                      		"XAnnotationElementValueOrCommaList");
-                              	        afterParserOrEnumRuleCall();
-                              	    
+                              							if (current==null) {
+                              								current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+                              							}
+                              							set(
+                              								current,
+                              								"value",
+                              								lv_value_7_0,
+                              								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValueOrCommaList");
+                              							afterParserOrEnumRuleCall();
+                              						
                             }
 
                             }
@@ -3810,11 +4534,11 @@
 
                     }
 
-                    otherlv_8=(Token)match(input,39,FOLLOW_39_in_ruleXAnnotation3152); if (state.failed) return current;
+                    otherlv_8=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
-                          
+                      				newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
+                      			
                     }
 
                     }
@@ -3829,14 +4553,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3845,7 +4571,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1352:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    // InternalActionDSL.g:1682:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
     public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -3853,13 +4579,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1353:2: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1354:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            // InternalActionDSL.g:1682:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // InternalActionDSL.g:1683:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair3190);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair();
 
             state._fsp--;
@@ -3867,16 +4593,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationElementValuePair; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair3200); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3885,7 +4611,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1361:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
+    // InternalActionDSL.g:1689:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
     public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -3893,48 +4619,49 @@
         EObject lv_value_2_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1364:28: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1365:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalActionDSL.g:1695:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // InternalActionDSL.g:1696:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1365:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1365:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalActionDSL.g:1696:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalActionDSL.g:1697:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1365:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1365:3: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalActionDSL.g:1697:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // InternalActionDSL.g:1698:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1370:5: ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1370:6: ( ( ruleValidID ) ) otherlv_1= '='
+            // InternalActionDSL.g:1707:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalActionDSL.g:1708:5: ( ( ruleValidID ) ) otherlv_1= '='
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1370:6: ( ( ruleValidID ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1371:1: ( ruleValidID )
+            // InternalActionDSL.g:1708:5: ( ( ruleValidID ) )
+            // InternalActionDSL.g:1709:6: ( ruleValidID )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1371:1: ( ruleValidID )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1372:3: ruleValidID
+            // InternalActionDSL.g:1709:6: ( ruleValidID )
+            // InternalActionDSL.g:1710:7: ruleValidID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
-              	        }
-                      
+              							if (current==null) {
+              								current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
+              							}
+              						
             }
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
-              	    
+
+              							newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0());
+              						
             }
-            pushFollow(FOLLOW_ruleValidID_in_ruleXAnnotationElementValuePair3270);
+            pushFollow(FOLLOW_40);
             ruleValidID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              							afterParserOrEnumRuleCall();
+              						
             }
 
             }
@@ -3942,11 +4669,11 @@
 
             }
 
-            otherlv_1=(Token)match(input,40,FOLLOW_40_in_ruleXAnnotationElementValuePair3282); if (state.failed) return current;
+            otherlv_1=(Token)match(input,50,FOLLOW_41); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
-                  
+              					newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+              				
             }
 
             }
@@ -3954,34 +4681,34 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1389:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1390:1: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalActionDSL.g:1730:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalActionDSL.g:1731:4: (lv_value_2_0= ruleXAnnotationElementValue )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1390:1: (lv_value_2_0= ruleXAnnotationElementValue )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1391:3: lv_value_2_0= ruleXAnnotationElementValue
+            // InternalActionDSL.g:1731:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalActionDSL.g:1732:5: lv_value_2_0= ruleXAnnotationElementValue
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_ruleXAnnotationElementValuePair3305);
+            pushFollow(FOLLOW_2);
             lv_value_2_0=ruleXAnnotationElementValue();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"value",
-                      		lv_value_2_0, 
-                      		"XAnnotationElementValue");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
+              					}
+              					set(
+              						current,
+              						"value",
+              						lv_value_2_0,
+              						"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValue");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -3996,14 +4723,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4012,7 +4741,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1415:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalActionDSL.g:1753:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
     public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -4020,13 +4749,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1416:2: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1417:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            // InternalActionDSL.g:1753:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalActionDSL.g:1754:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList3341);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList();
 
             state._fsp--;
@@ -4034,16 +4763,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationElementValueOrCommaList; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList3351); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4052,7 +4781,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1424:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
+    // InternalActionDSL.g:1760:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
     public final EObject ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -4070,52 +4799,53 @@
         EObject lv_elements_10_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1427:28: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1428:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            // InternalActionDSL.g:1766:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
+            // InternalActionDSL.g:1767:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1428:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
-            int alt24=2;
-            alt24 = dfa24.predict(input);
-            switch (alt24) {
+            // InternalActionDSL.g:1767:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            int alt29=2;
+            alt29 = dfa29.predict(input);
+            switch (alt29) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1428:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalActionDSL.g:1768:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1428:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1428:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalActionDSL.g:1768:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalActionDSL.g:1769:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1428:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1428:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalActionDSL.g:1769:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalActionDSL.g:1770:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1431:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1431:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalActionDSL.g:1777:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalActionDSL.g:1778:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1431:6: ()
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1432:5: 
+                    // InternalActionDSL.g:1778:6: ()
+                    // InternalActionDSL.g:1779:7: 
                     {
                     if ( state.backtracking==0 ) {
 
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
-                                  current);
-                          
+                      							current = forceCreateModelElement(
+                      								grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+                      								current);
+                      						
                     }
 
                     }
 
-                    otherlv_1=(Token)match(input,41,FOLLOW_41_in_ruleXAnnotationElementValueOrCommaList3416); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,51,FOLLOW_42); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
-                          
+                      						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+                      					
                     }
-                    otherlv_2=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotationElementValueOrCommaList3428); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,52,FOLLOW_43); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
-                          
+                      						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                      					
                     }
 
                     }
@@ -4123,434 +4853,45 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1445:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt21=2;
-                    int LA21_0 = input.LA(1);
-
-                    if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_DECIMAL)||LA21_0==14||LA21_0==33||(LA21_0>=36 && LA21_0<=37)||(LA21_0>=41 && LA21_0<=42)||LA21_0==49||(LA21_0>=65 && LA21_0<=66)||LA21_0==70||LA21_0==78||LA21_0==80||(LA21_0>=84 && LA21_0<=86)||(LA21_0>=89 && LA21_0<=100)||LA21_0==102) ) {
-                        alt21=1;
-                    }
-                    switch (alt21) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1445:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1445:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1446:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1446:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1447:3: lv_elements_3_0= ruleXAnnotationOrExpression
-                            {
-                            if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-                              	    
-                            }
-                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3452);
-                            lv_elements_3_0=ruleXAnnotationOrExpression();
-
-                            state._fsp--;
-                            if (state.failed) return current;
-                            if ( state.backtracking==0 ) {
-
-                              	        if (current==null) {
-                              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-                              	        }
-                                     		add(
-                                     			current, 
-                                     			"elements",
-                                      		lv_elements_3_0, 
-                                      		"XAnnotationOrExpression");
-                              	        afterParserOrEnumRuleCall();
-                              	    
-                            }
-
-                            }
-
-
-                            }
-
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1463:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            loop20:
-                            do {
-                                int alt20=2;
-                                int LA20_0 = input.LA(1);
-
-                                if ( (LA20_0==38) ) {
-                                    alt20=1;
-                                }
-
-
-                                switch (alt20) {
-                            	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1463:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    {
-                            	    otherlv_4=(Token)match(input,38,FOLLOW_38_in_ruleXAnnotationElementValueOrCommaList3465); if (state.failed) return current;
-                            	    if ( state.backtracking==0 ) {
-
-                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
-                            	          
-                            	    }
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1467:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1468:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    {
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1468:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1469:3: lv_elements_5_0= ruleXAnnotationOrExpression
-                            	    {
-                            	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
-                            	      	    
-                            	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3486);
-                            	    lv_elements_5_0=ruleXAnnotationOrExpression();
-
-                            	    state._fsp--;
-                            	    if (state.failed) return current;
-                            	    if ( state.backtracking==0 ) {
-
-                            	      	        if (current==null) {
-                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-                            	      	        }
-                            	             		add(
-                            	             			current, 
-                            	             			"elements",
-                            	              		lv_elements_5_0, 
-                            	              		"XAnnotationOrExpression");
-                            	      	        afterParserOrEnumRuleCall();
-                            	      	    
-                            	    }
-
-                            	    }
-
-
-                            	    }
-
-
-                            	    }
-                            	    break;
-
-                            	default :
-                            	    break loop20;
-                                }
-                            } while (true);
-
-
-                            }
-                            break;
-
-                    }
-
-                    otherlv_6=(Token)match(input,43,FOLLOW_43_in_ruleXAnnotationElementValueOrCommaList3502); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
-                          
-                    }
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1490:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1490:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1491:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
-                    {
-                    if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
-                          
-                    }
-                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3532);
-                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
-
-                    state._fsp--;
-                    if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-                       
-                              current = this_XAnnotationOrExpression_7; 
-                              afterParserOrEnumRuleCall();
-                          
-                    }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1499:1: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
-                    int alt23=2;
-                    int LA23_0 = input.LA(1);
-
-                    if ( (LA23_0==38) ) {
-                        alt23=1;
-                    }
-                    switch (alt23) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1499:2: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
-                            {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1499:2: ()
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1500:5: 
-                            {
-                            if ( state.backtracking==0 ) {
-
-                                      current = forceCreateModelElementAndAdd(
-                                          grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
-                                          current);
-                                  
-                            }
-
-                            }
-
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1505:2: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
-                            int cnt22=0;
-                            loop22:
-                            do {
-                                int alt22=2;
-                                int LA22_0 = input.LA(1);
-
-                                if ( (LA22_0==38) ) {
-                                    alt22=1;
-                                }
-
-
-                                switch (alt22) {
-                            	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1505:4: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
-                            	    {
-                            	    otherlv_9=(Token)match(input,38,FOLLOW_38_in_ruleXAnnotationElementValueOrCommaList3554); if (state.failed) return current;
-                            	    if ( state.backtracking==0 ) {
-
-                            	          	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
-                            	          
-                            	    }
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1509:1: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1510:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
-                            	    {
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1510:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1511:3: lv_elements_10_0= ruleXAnnotationOrExpression
-                            	    {
-                            	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
-                            	      	    
-                            	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3575);
-                            	    lv_elements_10_0=ruleXAnnotationOrExpression();
-
-                            	    state._fsp--;
-                            	    if (state.failed) return current;
-                            	    if ( state.backtracking==0 ) {
-
-                            	      	        if (current==null) {
-                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-                            	      	        }
-                            	             		add(
-                            	             			current, 
-                            	             			"elements",
-                            	              		lv_elements_10_0, 
-                            	              		"XAnnotationOrExpression");
-                            	      	        afterParserOrEnumRuleCall();
-                            	      	    
-                            	    }
-
-                            	    }
-
-
-                            	    }
-
-
-                            	    }
-                            	    break;
-
-                            	default :
-                            	    if ( cnt22 >= 1 ) break loop22;
-                            	    if (state.backtracking>0) {state.failed=true; return current;}
-                                        EarlyExitException eee =
-                                            new EarlyExitException(22, input);
-                                        throw eee;
-                                }
-                                cnt22++;
-                            } while (true);
-
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXAnnotationElementValueOrCommaList"
-
-
-    // $ANTLR start "entryRuleXAnnotationElementValue"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1535:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
-    public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXAnnotationElementValue = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1536:2: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1537:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
-            }
-            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue3616);
-            iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXAnnotationElementValue; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue3626); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXAnnotationElementValue"
-
-
-    // $ANTLR start "ruleXAnnotationElementValue"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1544:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
-    public final EObject ruleXAnnotationElementValue() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_1=null;
-        Token otherlv_2=null;
-        Token otherlv_4=null;
-        Token otherlv_6=null;
-        EObject lv_elements_3_0 = null;
-
-        EObject lv_elements_5_0 = null;
-
-        EObject this_XAnnotationOrExpression_7 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1547:28: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1548:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1548:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
-            int alt27=2;
-            alt27 = dfa27.predict(input);
-            switch (alt27) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1548:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1548:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1548:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1548:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1548:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1551:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1551:6: () otherlv_1= '#' otherlv_2= '['
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1551:6: ()
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1552:5: 
-                    {
-                    if ( state.backtracking==0 ) {
-
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
-                                  current);
-                          
-                    }
-
-                    }
-
-                    otherlv_1=(Token)match(input,41,FOLLOW_41_in_ruleXAnnotationElementValue3691); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
-                          
-                    }
-                    otherlv_2=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotationElementValue3703); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
-                          
-                    }
-
-                    }
-
-
-                    }
-
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1565:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    // InternalActionDSL.g:1795:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
                     int alt26=2;
                     int LA26_0 = input.LA(1);
 
-                    if ( ((LA26_0>=RULE_ID && LA26_0<=RULE_DECIMAL)||LA26_0==14||LA26_0==33||(LA26_0>=36 && LA26_0<=37)||(LA26_0>=41 && LA26_0<=42)||LA26_0==49||(LA26_0>=65 && LA26_0<=66)||LA26_0==70||LA26_0==78||LA26_0==80||(LA26_0>=84 && LA26_0<=86)||(LA26_0>=89 && LA26_0<=100)||LA26_0==102) ) {
+                    if ( ((LA26_0>=RULE_ID && LA26_0<=RULE_DECIMAL)||LA26_0==14||(LA26_0>=40 && LA26_0<=42)||(LA26_0>=46 && LA26_0<=47)||(LA26_0>=51 && LA26_0<=52)||LA26_0==59||(LA26_0>=75 && LA26_0<=76)||LA26_0==80||LA26_0==88||LA26_0==90||(LA26_0>=94 && LA26_0<=96)||(LA26_0>=99 && LA26_0<=108)||LA26_0==110) ) {
                         alt26=1;
                     }
                     switch (alt26) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1565:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalActionDSL.g:1796:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1565:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1566:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalActionDSL.g:1796:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalActionDSL.g:1797:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1566:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1567:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalActionDSL.g:1797:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalActionDSL.g:1798:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-                              	    
+
+                              							newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
+                              						
                             }
-                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue3727);
+                            pushFollow(FOLLOW_44);
                             lv_elements_3_0=ruleXAnnotationOrExpression();
 
                             state._fsp--;
                             if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                              	        if (current==null) {
-                              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
-                              	        }
-                                     		add(
-                                     			current, 
-                                     			"elements",
-                                      		lv_elements_3_0, 
-                                      		"XAnnotationOrExpression");
-                              	        afterParserOrEnumRuleCall();
-                              	    
+                              							if (current==null) {
+                              								current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                              							}
+                              							add(
+                              								current,
+                              								"elements",
+                              								lv_elements_3_0,
+                              								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                              							afterParserOrEnumRuleCall();
+                              						
                             }
 
                             }
@@ -4558,55 +4899,55 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1583:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalActionDSL.g:1815:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             loop25:
                             do {
                                 int alt25=2;
                                 int LA25_0 = input.LA(1);
 
-                                if ( (LA25_0==38) ) {
+                                if ( (LA25_0==48) ) {
                                     alt25=1;
                                 }
 
 
                                 switch (alt25) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1583:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalActionDSL.g:1816:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,38,FOLLOW_38_in_ruleXAnnotationElementValue3740); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,48,FOLLOW_41); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
-                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
-                            	          
+                            	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+                            	      					
                             	    }
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1587:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1588:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalActionDSL.g:1820:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalActionDSL.g:1821:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1588:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1589:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalActionDSL.g:1821:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalActionDSL.g:1822:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
-                            	      	    
+
+                            	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
+                            	      							
                             	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue3761);
+                            	    pushFollow(FOLLOW_44);
                             	    lv_elements_5_0=ruleXAnnotationOrExpression();
 
                             	    state._fsp--;
                             	    if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
-                            	      	        if (current==null) {
-                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
-                            	      	        }
-                            	             		add(
-                            	             			current, 
-                            	             			"elements",
-                            	              		lv_elements_5_0, 
-                            	              		"XAnnotationOrExpression");
-                            	      	        afterParserOrEnumRuleCall();
-                            	      	    
+                            	      								if (current==null) {
+                            	      									current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                            	      								}
+                            	      								add(
+                            	      									current,
+                            	      									"elements",
+                            	      									lv_elements_5_0,
+                            	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                            	      								afterParserOrEnumRuleCall();
+                            	      							
                             	    }
 
                             	    }
@@ -4629,11 +4970,11 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,43,FOLLOW_43_in_ruleXAnnotationElementValue3777); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
-                          
+                      				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+                      			
                     }
 
                     }
@@ -4642,23 +4983,415 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1611:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    // InternalActionDSL.g:1847:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    {
+                    // InternalActionDSL.g:1847:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalActionDSL.g:1848:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
-                          
+
+                      				newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0());
+                      			
                     }
-                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue3806);
+                    pushFollow(FOLLOW_45);
                     this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_XAnnotationOrExpression_7; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      				current = this_XAnnotationOrExpression_7;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+                    // InternalActionDSL.g:1856:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    int alt28=2;
+                    int LA28_0 = input.LA(1);
+
+                    if ( (LA28_0==48) ) {
+                        alt28=1;
+                    }
+                    switch (alt28) {
+                        case 1 :
+                            // InternalActionDSL.g:1857:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            {
+                            // InternalActionDSL.g:1857:5: ()
+                            // InternalActionDSL.g:1858:6: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              						current = forceCreateModelElementAndAdd(
+                              							grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+                              							current);
+                              					
+                            }
+
+                            }
+
+                            // InternalActionDSL.g:1864:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            int cnt27=0;
+                            loop27:
+                            do {
+                                int alt27=2;
+                                int LA27_0 = input.LA(1);
+
+                                if ( (LA27_0==48) ) {
+                                    alt27=1;
+                                }
+
+
+                                switch (alt27) {
+                            	case 1 :
+                            	    // InternalActionDSL.g:1865:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,48,FOLLOW_41); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+                            	      					
+                            	    }
+                            	    // InternalActionDSL.g:1869:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalActionDSL.g:1870:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // InternalActionDSL.g:1870:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalActionDSL.g:1871:8: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0());
+                            	      							
+                            	    }
+                            	    pushFollow(FOLLOW_45);
+                            	    lv_elements_10_0=ruleXAnnotationOrExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								if (current==null) {
+                            	      									current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                            	      								}
+                            	      								add(
+                            	      									current,
+                            	      									"elements",
+                            	      									lv_elements_10_0,
+                            	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                            	      								afterParserOrEnumRuleCall();
+                            	      							
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    if ( cnt27 >= 1 ) break loop27;
+                            	    if (state.backtracking>0) {state.failed=true; return current;}
+                                        EarlyExitException eee =
+                                            new EarlyExitException(27, input);
+                                        throw eee;
+                                }
+                                cnt27++;
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValue"
+    // InternalActionDSL.g:1895:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValue = null;
+
+
+        try {
+            // InternalActionDSL.g:1895:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // InternalActionDSL.g:1896:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValue; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValue"
+
+
+    // $ANTLR start "ruleXAnnotationElementValue"
+    // InternalActionDSL.g:1902:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
+    public final EObject ruleXAnnotationElementValue() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_elements_3_0 = null;
+
+        EObject lv_elements_5_0 = null;
+
+        EObject this_XAnnotationOrExpression_7 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:1908:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
+            // InternalActionDSL.g:1909:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            {
+            // InternalActionDSL.g:1909:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            int alt32=2;
+            alt32 = dfa32.predict(input);
+            switch (alt32) {
+                case 1 :
+                    // InternalActionDSL.g:1910:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    {
+                    // InternalActionDSL.g:1910:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalActionDSL.g:1911:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    {
+                    // InternalActionDSL.g:1911:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalActionDSL.g:1912:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    {
+                    // InternalActionDSL.g:1919:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalActionDSL.g:1920:6: () otherlv_1= '#' otherlv_2= '['
+                    {
+                    // InternalActionDSL.g:1920:6: ()
+                    // InternalActionDSL.g:1921:7: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							current = forceCreateModelElement(
+                      								grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+                      								current);
+                      						
+                    }
+
+                    }
+
+                    otherlv_1=(Token)match(input,51,FOLLOW_42); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+                      					
+                    }
+                    otherlv_2=(Token)match(input,52,FOLLOW_43); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:1937:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt31=2;
+                    int LA31_0 = input.LA(1);
+
+                    if ( ((LA31_0>=RULE_ID && LA31_0<=RULE_DECIMAL)||LA31_0==14||(LA31_0>=40 && LA31_0<=42)||(LA31_0>=46 && LA31_0<=47)||(LA31_0>=51 && LA31_0<=52)||LA31_0==59||(LA31_0>=75 && LA31_0<=76)||LA31_0==80||LA31_0==88||LA31_0==90||(LA31_0>=94 && LA31_0<=96)||(LA31_0>=99 && LA31_0<=108)||LA31_0==110) ) {
+                        alt31=1;
+                    }
+                    switch (alt31) {
+                        case 1 :
+                            // InternalActionDSL.g:1938:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            {
+                            // InternalActionDSL.g:1938:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalActionDSL.g:1939:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            {
+                            // InternalActionDSL.g:1939:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalActionDSL.g:1940:7: lv_elements_3_0= ruleXAnnotationOrExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_44);
+                            lv_elements_3_0=ruleXAnnotationOrExpression();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							if (current==null) {
+                              								current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+                              							}
+                              							add(
+                              								current,
+                              								"elements",
+                              								lv_elements_3_0,
+                              								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                              							afterParserOrEnumRuleCall();
+                              						
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalActionDSL.g:1957:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop30:
+                            do {
+                                int alt30=2;
+                                int LA30_0 = input.LA(1);
+
+                                if ( (LA30_0==48) ) {
+                                    alt30=1;
+                                }
+
+
+                                switch (alt30) {
+                            	case 1 :
+                            	    // InternalActionDSL.g:1958:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_4=(Token)match(input,48,FOLLOW_41); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+                            	      					
+                            	    }
+                            	    // InternalActionDSL.g:1962:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalActionDSL.g:1963:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // InternalActionDSL.g:1963:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalActionDSL.g:1964:8: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
+                            	      							
+                            	    }
+                            	    pushFollow(FOLLOW_44);
+                            	    lv_elements_5_0=ruleXAnnotationOrExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								if (current==null) {
+                            	      									current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+                            	      								}
+                            	      								add(
+                            	      									current,
+                            	      									"elements",
+                            	      									lv_elements_5_0,
+                            	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                            	      								afterParserOrEnumRuleCall();
+                            	      							
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop30;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_6=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:1989:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XAnnotationOrExpression_7;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
@@ -4670,14 +5403,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4686,7 +5421,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1627:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    // InternalActionDSL.g:2001:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
     public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -4694,13 +5429,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1628:2: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1629:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            // InternalActionDSL.g:2001:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // InternalActionDSL.g:2002:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression3841);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression();
 
             state._fsp--;
@@ -4708,16 +5443,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationOrExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression3851); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4726,7 +5461,7 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1636:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    // InternalActionDSL.g:2008:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -4735,70 +5470,71 @@
         EObject this_XExpression_1 = null;
 
 
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1639:28: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1640:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1640:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            int alt28=2;
-            int LA28_0 = input.LA(1);
 
-            if ( (LA28_0==36) ) {
-                alt28=1;
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:2014:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // InternalActionDSL.g:2015:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            {
+            // InternalActionDSL.g:2015:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==46) ) {
+                alt33=1;
             }
-            else if ( ((LA28_0>=RULE_ID && LA28_0<=RULE_DECIMAL)||LA28_0==14||LA28_0==33||LA28_0==37||(LA28_0>=41 && LA28_0<=42)||LA28_0==49||(LA28_0>=65 && LA28_0<=66)||LA28_0==70||LA28_0==78||LA28_0==80||(LA28_0>=84 && LA28_0<=86)||(LA28_0>=89 && LA28_0<=100)||LA28_0==102) ) {
-                alt28=2;
+            else if ( ((LA33_0>=RULE_ID && LA33_0<=RULE_DECIMAL)||LA33_0==14||(LA33_0>=40 && LA33_0<=42)||LA33_0==47||(LA33_0>=51 && LA33_0<=52)||LA33_0==59||(LA33_0>=75 && LA33_0<=76)||LA33_0==80||LA33_0==88||LA33_0==90||(LA33_0>=94 && LA33_0<=96)||(LA33_0>=99 && LA33_0<=108)||LA33_0==110) ) {
+                alt33=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 28, 0, input);
+                    new NoViableAltException("", 33, 0, input);
 
                 throw nvae;
             }
-            switch (alt28) {
+            switch (alt33) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1641:5: this_XAnnotation_0= ruleXAnnotation
+                    // InternalActionDSL.g:2016:3: this_XAnnotation_0= ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXAnnotation_in_ruleXAnnotationOrExpression3898);
+                    pushFollow(FOLLOW_2);
                     this_XAnnotation_0=ruleXAnnotation();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_XAnnotation_0; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_XAnnotation_0;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1651:5: this_XExpression_1= ruleXExpression
+                    // InternalActionDSL.g:2025:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXExpression_in_ruleXAnnotationOrExpression3925);
+                    pushFollow(FOLLOW_2);
                     this_XExpression_1=ruleXExpression();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_XExpression_1; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_XExpression_1;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
@@ -4810,14 +5546,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4826,7 +5564,7 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1667:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    // InternalActionDSL.g:2037:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
     public final EObject entryRuleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -4834,13 +5572,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1668:2: (iv_ruleXExpression= ruleXExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1669:2: iv_ruleXExpression= ruleXExpression EOF
+            // InternalActionDSL.g:2037:52: (iv_ruleXExpression= ruleXExpression EOF )
+            // InternalActionDSL.g:2038:2: iv_ruleXExpression= ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression3960);
+            pushFollow(FOLLOW_1);
             iv_ruleXExpression=ruleXExpression();
 
             state._fsp--;
@@ -4848,16 +5586,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression3970); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4866,47 +5604,50 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1676:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    // InternalActionDSL.g:2044:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
     public final EObject ruleXExpression() throws RecognitionException {
         EObject current = null;
 
         EObject this_XAssignment_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1679:28: (this_XAssignment_0= ruleXAssignment )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1681:5: this_XAssignment_0= ruleXAssignment
+            // InternalActionDSL.g:2050:2: (this_XAssignment_0= ruleXAssignment )
+            // InternalActionDSL.g:2051:2: this_XAssignment_0= ruleXAssignment
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
-                  
+
+              		newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall());
+              	
             }
-            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression4016);
+            pushFollow(FOLLOW_2);
             this_XAssignment_0=ruleXAssignment();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XAssignment_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              		current = this_XAssignment_0;
+              		afterParserOrEnumRuleCall();
+              	
             }
 
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4915,7 +5656,7 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1697:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    // InternalActionDSL.g:2062:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
     public final EObject entryRuleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -4923,13 +5664,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1698:2: (iv_ruleXAssignment= ruleXAssignment EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1699:2: iv_ruleXAssignment= ruleXAssignment EOF
+            // InternalActionDSL.g:2062:52: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // InternalActionDSL.g:2063:2: iv_ruleXAssignment= ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAssignmentRule()); 
             }
-            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment4050);
+            pushFollow(FOLLOW_1);
             iv_ruleXAssignment=ruleXAssignment();
 
             state._fsp--;
@@ -4937,16 +5678,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAssignment; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment4060); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4955,7 +5696,7 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1706:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
+    // InternalActionDSL.g:2069:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
     public final EObject ruleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -4966,105 +5707,106 @@
         EObject lv_rightOperand_7_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1709:28: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1710:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalActionDSL.g:2075:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // InternalActionDSL.g:2076:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1710:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
-            int alt30=2;
+            // InternalActionDSL.g:2076:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            int alt35=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA30_1 = input.LA(2);
+                int LA35_1 = input.LA(2);
 
-                if ( (LA30_1==40) ) {
-                    alt30=1;
+                if ( (LA35_1==50) ) {
+                    alt35=1;
                 }
-                else if ( (LA30_1==EOF||(LA30_1>=RULE_ID && LA30_1<=RULE_DECIMAL)||(LA30_1>=14 && LA30_1<=15)||(LA30_1>=33 && LA30_1<=35)||(LA30_1>=37 && LA30_1<=39)||(LA30_1>=41 && LA30_1<=75)||(LA30_1>=77 && LA30_1<=103)) ) {
-                    alt30=2;
+                else if ( (LA35_1==EOF||(LA35_1>=RULE_ID && LA35_1<=RULE_DECIMAL)||(LA35_1>=14 && LA35_1<=15)||(LA35_1>=40 && LA35_1<=43)||LA35_1==45||(LA35_1>=47 && LA35_1<=49)||(LA35_1>=51 && LA35_1<=86)||(LA35_1>=88 && LA35_1<=111)) ) {
+                    alt35=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 30, 1, input);
+                        new NoViableAltException("", 35, 1, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 89:
+            case 99:
                 {
-                int LA30_2 = input.LA(2);
+                int LA35_2 = input.LA(2);
 
-                if ( (LA30_2==EOF||(LA30_2>=RULE_ID && LA30_2<=RULE_DECIMAL)||(LA30_2>=14 && LA30_2<=15)||(LA30_2>=33 && LA30_2<=35)||(LA30_2>=37 && LA30_2<=39)||(LA30_2>=41 && LA30_2<=75)||(LA30_2>=77 && LA30_2<=103)) ) {
-                    alt30=2;
+                if ( (LA35_2==50) ) {
+                    alt35=1;
                 }
-                else if ( (LA30_2==40) ) {
-                    alt30=1;
+                else if ( (LA35_2==EOF||(LA35_2>=RULE_ID && LA35_2<=RULE_DECIMAL)||(LA35_2>=14 && LA35_2<=15)||(LA35_2>=40 && LA35_2<=43)||LA35_2==45||(LA35_2>=47 && LA35_2<=49)||(LA35_2>=51 && LA35_2<=86)||(LA35_2>=88 && LA35_2<=111)) ) {
+                    alt35=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 30, 2, input);
+                        new NoViableAltException("", 35, 2, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 90:
+            case 41:
                 {
-                int LA30_3 = input.LA(2);
+                int LA35_3 = input.LA(2);
 
-                if ( (LA30_3==EOF||(LA30_3>=RULE_ID && LA30_3<=RULE_DECIMAL)||(LA30_3>=14 && LA30_3<=15)||(LA30_3>=33 && LA30_3<=35)||(LA30_3>=37 && LA30_3<=39)||(LA30_3>=41 && LA30_3<=75)||(LA30_3>=77 && LA30_3<=103)) ) {
-                    alt30=2;
+                if ( (LA35_3==50) ) {
+                    alt35=1;
                 }
-                else if ( (LA30_3==40) ) {
-                    alt30=1;
+                else if ( (LA35_3==EOF||(LA35_3>=RULE_ID && LA35_3<=RULE_DECIMAL)||(LA35_3>=14 && LA35_3<=15)||(LA35_3>=40 && LA35_3<=43)||LA35_3==45||(LA35_3>=47 && LA35_3<=49)||(LA35_3>=51 && LA35_3<=86)||(LA35_3>=88 && LA35_3<=111)) ) {
+                    alt35=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 30, 3, input);
+                        new NoViableAltException("", 35, 3, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 33:
+            case 40:
                 {
-                int LA30_4 = input.LA(2);
+                int LA35_4 = input.LA(2);
 
-                if ( (LA30_4==40) ) {
-                    alt30=1;
+                if ( (LA35_4==50) ) {
+                    alt35=1;
                 }
-                else if ( (LA30_4==EOF||(LA30_4>=RULE_ID && LA30_4<=RULE_DECIMAL)||(LA30_4>=14 && LA30_4<=15)||(LA30_4>=33 && LA30_4<=35)||(LA30_4>=37 && LA30_4<=39)||(LA30_4>=41 && LA30_4<=75)||(LA30_4>=77 && LA30_4<=103)) ) {
-                    alt30=2;
+                else if ( (LA35_4==EOF||(LA35_4>=RULE_ID && LA35_4<=RULE_DECIMAL)||(LA35_4>=14 && LA35_4<=15)||(LA35_4>=40 && LA35_4<=43)||LA35_4==45||(LA35_4>=47 && LA35_4<=49)||(LA35_4>=51 && LA35_4<=86)||(LA35_4>=88 && LA35_4<=111)) ) {
+                    alt35=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 30, 4, input);
+                        new NoViableAltException("", 35, 4, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 91:
+            case 42:
                 {
-                int LA30_5 = input.LA(2);
+                int LA35_5 = input.LA(2);
 
-                if ( (LA30_5==EOF||(LA30_5>=RULE_ID && LA30_5<=RULE_DECIMAL)||(LA30_5>=14 && LA30_5<=15)||(LA30_5>=33 && LA30_5<=35)||(LA30_5>=37 && LA30_5<=39)||(LA30_5>=41 && LA30_5<=75)||(LA30_5>=77 && LA30_5<=103)) ) {
-                    alt30=2;
+                if ( (LA35_5==50) ) {
+                    alt35=1;
                 }
-                else if ( (LA30_5==40) ) {
-                    alt30=1;
+                else if ( (LA35_5==EOF||(LA35_5>=RULE_ID && LA35_5<=RULE_DECIMAL)||(LA35_5>=14 && LA35_5<=15)||(LA35_5>=40 && LA35_5<=43)||LA35_5==45||(LA35_5>=47 && LA35_5<=49)||(LA35_5>=51 && LA35_5<=86)||(LA35_5>=88 && LA35_5<=111)) ) {
+                    alt35=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 30, 5, input);
+                        new NoViableAltException("", 35, 5, input);
 
                     throw nvae;
                 }
@@ -5075,87 +5817,87 @@
             case RULE_INT:
             case RULE_DECIMAL:
             case 14:
-            case 37:
-            case 41:
-            case 42:
-            case 49:
-            case 65:
-            case 66:
-            case 70:
-            case 78:
+            case 47:
+            case 51:
+            case 52:
+            case 59:
+            case 75:
+            case 76:
             case 80:
-            case 84:
-            case 85:
-            case 86:
-            case 92:
-            case 93:
+            case 88:
+            case 90:
             case 94:
             case 95:
             case 96:
-            case 97:
-            case 98:
-            case 99:
             case 100:
+            case 101:
             case 102:
+            case 103:
+            case 104:
+            case 105:
+            case 106:
+            case 107:
+            case 108:
+            case 110:
                 {
-                alt30=2;
+                alt35=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 30, 0, input);
+                    new NoViableAltException("", 35, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt30) {
+            switch (alt35) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1710:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalActionDSL.g:2077:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1710:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1710:3: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalActionDSL.g:2077:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalActionDSL.g:2078:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1710:3: ()
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1711:5: 
+                    // InternalActionDSL.g:2078:4: ()
+                    // InternalActionDSL.g:2079:5: 
                     {
                     if ( state.backtracking==0 ) {
 
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
-                                  current);
-                          
+                      					current = forceCreateModelElement(
+                      						grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+                      						current);
+                      				
                     }
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1716:2: ( ( ruleFeatureCallID ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1717:1: ( ruleFeatureCallID )
+                    // InternalActionDSL.g:2085:4: ( ( ruleFeatureCallID ) )
+                    // InternalActionDSL.g:2086:5: ( ruleFeatureCallID )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1717:1: ( ruleFeatureCallID )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1718:3: ruleFeatureCallID
+                    // InternalActionDSL.g:2086:5: ( ruleFeatureCallID )
+                    // InternalActionDSL.g:2087:6: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getXAssignmentRule());
-                      	        }
-                              
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXAssignmentRule());
+                      						}
+                      					
                     }
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleXAssignment4118);
+                    pushFollow(FOLLOW_40);
                     ruleFeatureCallID();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                      	        afterParserOrEnumRuleCall();
-                      	    
+
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -5164,48 +5906,48 @@
                     }
 
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
-                          
+
+                      				newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2());
+                      			
                     }
-                    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXAssignment4134);
+                    pushFollow(FOLLOW_41);
                     ruleOpSingleAssign();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              afterParserOrEnumRuleCall();
-                          
+
+                      				afterParserOrEnumRuleCall();
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1739:1: ( (lv_value_3_0= ruleXAssignment ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1740:1: (lv_value_3_0= ruleXAssignment )
+                    // InternalActionDSL.g:2108:4: ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalActionDSL.g:2109:5: (lv_value_3_0= ruleXAssignment )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1740:1: (lv_value_3_0= ruleXAssignment )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1741:3: lv_value_3_0= ruleXAssignment
+                    // InternalActionDSL.g:2109:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalActionDSL.g:2110:6: lv_value_3_0= ruleXAssignment
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4154);
+                    pushFollow(FOLLOW_2);
                     lv_value_3_0=ruleXAssignment();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"value",
-                              		lv_value_3_0, 
-                              		"XAssignment");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+                      						}
+                      						set(
+                      							current,
+                      							"value",
+                      							lv_value_3_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XAssignment");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -5220,80 +5962,80 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1758:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalActionDSL.g:2129:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1758:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1759:5: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    // InternalActionDSL.g:2129:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalActionDSL.g:2130:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
-                          
+
+                      				newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0());
+                      			
                     }
-                    pushFollow(FOLLOW_ruleXOrExpression_in_ruleXAssignment4184);
+                    pushFollow(FOLLOW_46);
                     this_XOrExpression_4=ruleXOrExpression();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_XOrExpression_4; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      				current = this_XOrExpression_4;
+                      				afterParserOrEnumRuleCall();
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1767:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
-                    int alt29=2;
-                    alt29 = dfa29.predict(input);
-                    switch (alt29) {
+                    // InternalActionDSL.g:2138:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    int alt34=2;
+                    alt34 = dfa34.predict(input);
+                    switch (alt34) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1767:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalActionDSL.g:2139:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1767:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1767:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalActionDSL.g:2139:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // InternalActionDSL.g:2140:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1772:6: ( () ( ( ruleOpMultiAssign ) ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1772:7: () ( ( ruleOpMultiAssign ) )
+                            // InternalActionDSL.g:2150:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalActionDSL.g:2151:7: () ( ( ruleOpMultiAssign ) )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1772:7: ()
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1773:5: 
+                            // InternalActionDSL.g:2151:7: ()
+                            // InternalActionDSL.g:2152:8: 
                             {
                             if ( state.backtracking==0 ) {
 
-                                      current = forceCreateModelElementAndSet(
-                                          grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-                                          current);
-                                  
+                              								current = forceCreateModelElementAndSet(
+                              									grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+                              									current);
+                              							
                             }
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1778:2: ( ( ruleOpMultiAssign ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1779:1: ( ruleOpMultiAssign )
+                            // InternalActionDSL.g:2158:7: ( ( ruleOpMultiAssign ) )
+                            // InternalActionDSL.g:2159:8: ( ruleOpMultiAssign )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1779:1: ( ruleOpMultiAssign )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1780:3: ruleOpMultiAssign
+                            // InternalActionDSL.g:2159:8: ( ruleOpMultiAssign )
+                            // InternalActionDSL.g:2160:9: ruleOpMultiAssign
                             {
                             if ( state.backtracking==0 ) {
 
-                              			if (current==null) {
-                              	            current = createModelElement(grammarAccess.getXAssignmentRule());
-                              	        }
-                                      
+                              									if (current==null) {
+                              										current = createModelElement(grammarAccess.getXAssignmentRule());
+                              									}
+                              								
                             }
                             if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
-                              	    
+
+                              									newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
+                              								
                             }
-                            pushFollow(FOLLOW_ruleOpMultiAssign_in_ruleXAssignment4237);
+                            pushFollow(FOLLOW_41);
                             ruleOpMultiAssign();
 
                             state._fsp--;
                             if (state.failed) return current;
                             if ( state.backtracking==0 ) {
-                               
-                              	        afterParserOrEnumRuleCall();
-                              	    
+
+                              									afterParserOrEnumRuleCall();
+                              								
                             }
 
                             }
@@ -5307,34 +6049,34 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1793:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1794:1: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalActionDSL.g:2176:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalActionDSL.g:2177:6: (lv_rightOperand_7_0= ruleXAssignment )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1794:1: (lv_rightOperand_7_0= ruleXAssignment )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1795:3: lv_rightOperand_7_0= ruleXAssignment
+                            // InternalActionDSL.g:2177:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalActionDSL.g:2178:7: lv_rightOperand_7_0= ruleXAssignment
                             {
                             if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
-                              	    
+
+                              							newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0());
+                              						
                             }
-                            pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4260);
+                            pushFollow(FOLLOW_2);
                             lv_rightOperand_7_0=ruleXAssignment();
 
                             state._fsp--;
                             if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                              	        if (current==null) {
-                              	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
-                              	        }
-                                     		set(
-                                     			current, 
-                                     			"rightOperand",
-                                      		lv_rightOperand_7_0, 
-                                      		"XAssignment");
-                              	        afterParserOrEnumRuleCall();
-                              	    
+                              							if (current==null) {
+                              								current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+                              							}
+                              							set(
+                              								current,
+                              								"rightOperand",
+                              								lv_rightOperand_7_0,
+                              								"org.eclipse.xtext.xbase.Xbase.XAssignment");
+                              							afterParserOrEnumRuleCall();
+                              						
                             }
 
                             }
@@ -5361,14 +6103,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5377,7 +6121,7 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1819:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    // InternalActionDSL.g:2201:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
     public final String entryRuleOpSingleAssign() throws RecognitionException {
         String current = null;
 
@@ -5385,13 +6129,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1820:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1821:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            // InternalActionDSL.g:2201:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // InternalActionDSL.g:2202:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
             }
-            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign4300);
+            pushFollow(FOLLOW_1);
             iv_ruleOpSingleAssign=ruleOpSingleAssign();
 
             state._fsp--;
@@ -5399,16 +6143,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpSingleAssign.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign4311); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5417,37 +6161,40 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1828:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    // InternalActionDSL.g:2208:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
     public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1831:28: (kw= '=' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1833:2: kw= '='
+            // InternalActionDSL.g:2214:2: (kw= '=' )
+            // InternalActionDSL.g:2215:2: kw= '='
             {
-            kw=(Token)match(input,40,FOLLOW_40_in_ruleOpSingleAssign4348); if (state.failed) return current;
+            kw=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                      current.merge(kw);
-                      newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
-                  
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword());
+              	
             }
 
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5456,7 +6203,7 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1846:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    // InternalActionDSL.g:2223:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
     public final String entryRuleOpMultiAssign() throws RecognitionException {
         String current = null;
 
@@ -5464,13 +6211,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1847:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1848:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            // InternalActionDSL.g:2223:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // InternalActionDSL.g:2224:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
             }
-            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign4388);
+            pushFollow(FOLLOW_1);
             iv_ruleOpMultiAssign=ruleOpMultiAssign();
 
             state._fsp--;
@@ -5478,16 +6225,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpMultiAssign.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign4399); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5496,156 +6243,157 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1855:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
+    // InternalActionDSL.g:2230:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
     public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1858:28: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1859:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            // InternalActionDSL.g:2236:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // InternalActionDSL.g:2237:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1859:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
-            int alt32=7;
+            // InternalActionDSL.g:2237:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            int alt37=7;
             switch ( input.LA(1) ) {
-            case 44:
+            case 54:
                 {
-                alt32=1;
+                alt37=1;
                 }
                 break;
-            case 45:
+            case 55:
                 {
-                alt32=2;
+                alt37=2;
                 }
                 break;
-            case 46:
+            case 56:
                 {
-                alt32=3;
+                alt37=3;
                 }
                 break;
-            case 47:
+            case 57:
                 {
-                alt32=4;
+                alt37=4;
                 }
                 break;
-            case 48:
+            case 58:
                 {
-                alt32=5;
+                alt37=5;
                 }
                 break;
-            case 49:
+            case 59:
                 {
-                alt32=6;
+                alt37=6;
                 }
                 break;
-            case 50:
+            case 60:
                 {
-                alt32=7;
+                alt37=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 32, 0, input);
+                    new NoViableAltException("", 37, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt32) {
+            switch (alt37) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1860:2: kw= '+='
+                    // InternalActionDSL.g:2238:3: kw= '+='
                     {
-                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpMultiAssign4437); if (state.failed) return current;
+                    kw=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1867:2: kw= '-='
+                    // InternalActionDSL.g:2244:3: kw= '-='
                     {
-                    kw=(Token)match(input,45,FOLLOW_45_in_ruleOpMultiAssign4456); if (state.failed) return current;
+                    kw=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1());
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1874:2: kw= '*='
+                    // InternalActionDSL.g:2250:3: kw= '*='
                     {
-                    kw=(Token)match(input,46,FOLLOW_46_in_ruleOpMultiAssign4475); if (state.failed) return current;
+                    kw=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2());
+                      		
                     }
 
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1881:2: kw= '/='
+                    // InternalActionDSL.g:2256:3: kw= '/='
                     {
-                    kw=(Token)match(input,47,FOLLOW_47_in_ruleOpMultiAssign4494); if (state.failed) return current;
+                    kw=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3());
+                      		
                     }
 
                     }
                     break;
                 case 5 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1888:2: kw= '%='
+                    // InternalActionDSL.g:2262:3: kw= '%='
                     {
-                    kw=(Token)match(input,48,FOLLOW_48_in_ruleOpMultiAssign4513); if (state.failed) return current;
+                    kw=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4());
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1894:6: (kw= '<' kw= '<' kw= '=' )
+                    // InternalActionDSL.g:2268:3: (kw= '<' kw= '<' kw= '=' )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1894:6: (kw= '<' kw= '<' kw= '=' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1895:2: kw= '<' kw= '<' kw= '='
+                    // InternalActionDSL.g:2268:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalActionDSL.g:2269:4: kw= '<' kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,49,FOLLOW_49_in_ruleOpMultiAssign4533); if (state.failed) return current;
+                    kw=(Token)match(input,59,FOLLOW_47); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0());
+                      			
                     }
-                    kw=(Token)match(input,49,FOLLOW_49_in_ruleOpMultiAssign4546); if (state.failed) return current;
+                    kw=(Token)match(input,59,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1());
+                      			
                     }
-                    kw=(Token)match(input,40,FOLLOW_40_in_ruleOpMultiAssign4559); if (state.failed) return current;
+                    kw=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2());
+                      			
                     }
 
                     }
@@ -5654,35 +6402,35 @@
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1913:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalActionDSL.g:2286:3: (kw= '>' (kw= '>' )? kw= '>=' )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1913:6: (kw= '>' (kw= '>' )? kw= '>=' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1914:2: kw= '>' (kw= '>' )? kw= '>='
+                    // InternalActionDSL.g:2286:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalActionDSL.g:2287:4: kw= '>' (kw= '>' )? kw= '>='
                     {
-                    kw=(Token)match(input,50,FOLLOW_50_in_ruleOpMultiAssign4580); if (state.failed) return current;
+                    kw=(Token)match(input,60,FOLLOW_48); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1919:1: (kw= '>' )?
-                    int alt31=2;
-                    int LA31_0 = input.LA(1);
+                    // InternalActionDSL.g:2292:4: (kw= '>' )?
+                    int alt36=2;
+                    int LA36_0 = input.LA(1);
 
-                    if ( (LA31_0==50) ) {
-                        alt31=1;
+                    if ( (LA36_0==60) ) {
+                        alt36=1;
                     }
-                    switch (alt31) {
+                    switch (alt36) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1920:2: kw= '>'
+                            // InternalActionDSL.g:2293:5: kw= '>'
                             {
-                            kw=(Token)match(input,50,FOLLOW_50_in_ruleOpMultiAssign4594); if (state.failed) return current;
+                            kw=(Token)match(input,60,FOLLOW_49); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1());
+                              				
                             }
 
                             }
@@ -5690,12 +6438,12 @@
 
                     }
 
-                    kw=(Token)match(input,51,FOLLOW_51_in_ruleOpMultiAssign4609); if (state.failed) return current;
+                    kw=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2());
+                      			
                     }
 
                     }
@@ -5710,14 +6458,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5726,7 +6476,7 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1939:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    // InternalActionDSL.g:2309:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
     public final EObject entryRuleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5734,13 +6484,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1940:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1941:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            // InternalActionDSL.g:2309:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // InternalActionDSL.g:2310:2: iv_ruleXOrExpression= ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOrExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression4650);
+            pushFollow(FOLLOW_1);
             iv_ruleXOrExpression=ruleXOrExpression();
 
             state._fsp--;
@@ -5748,16 +6498,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXOrExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression4660); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5766,7 +6516,7 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1948:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    // InternalActionDSL.g:2316:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
     public final EObject ruleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5775,98 +6525,99 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1951:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1952:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalActionDSL.g:2322:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // InternalActionDSL.g:2323:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1952:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1953:5: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalActionDSL.g:2323:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalActionDSL.g:2324:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression4707);
+            pushFollow(FOLLOW_50);
             this_XAndExpression_0=ruleXAndExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XAndExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XAndExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1961:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
-            loop33:
+            // InternalActionDSL.g:2332:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            loop38:
             do {
-                int alt33=2;
-                int LA33_0 = input.LA(1);
+                int alt38=2;
+                int LA38_0 = input.LA(1);
 
-                if ( (LA33_0==52) ) {
-                    int LA33_2 = input.LA(2);
+                if ( (LA38_0==62) ) {
+                    int LA38_2 = input.LA(2);
 
-                    if ( (synpred9_InternalActionDSL()) ) {
-                        alt33=1;
+                    if ( (synpred8_InternalActionDSL()) ) {
+                        alt38=1;
                     }
 
 
                 }
 
 
-                switch (alt33) {
+                switch (alt38) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1961:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalActionDSL.g:2333:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1961:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1961:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    // InternalActionDSL.g:2333:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // InternalActionDSL.g:2334:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1966:6: ( () ( ( ruleOpOr ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1966:7: () ( ( ruleOpOr ) )
+            	    // InternalActionDSL.g:2344:5: ( () ( ( ruleOpOr ) ) )
+            	    // InternalActionDSL.g:2345:6: () ( ( ruleOpOr ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1966:7: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1967:5: 
+            	    // InternalActionDSL.g:2345:6: ()
+            	    // InternalActionDSL.g:2346:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1972:2: ( ( ruleOpOr ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1973:1: ( ruleOpOr )
+            	    // InternalActionDSL.g:2352:6: ( ( ruleOpOr ) )
+            	    // InternalActionDSL.g:2353:7: ( ruleOpOr )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1973:1: ( ruleOpOr )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1974:3: ruleOpOr
+            	    // InternalActionDSL.g:2353:7: ( ruleOpOr )
+            	    // InternalActionDSL.g:2354:8: ruleOpOr
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXOrExpressionRule());
-            	      	        }
-            	              
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXOrExpressionRule());
+            	      								}
+            	      							
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
+
+            	      								newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
             	    }
-            	    pushFollow(FOLLOW_ruleOpOr_in_ruleXOrExpression4760);
+            	    pushFollow(FOLLOW_41);
             	    ruleOpOr();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -5880,34 +6631,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1987:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1988:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalActionDSL.g:2370:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalActionDSL.g:2371:5: (lv_rightOperand_3_0= ruleXAndExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1988:1: (lv_rightOperand_3_0= ruleXAndExpression )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:1989:3: lv_rightOperand_3_0= ruleXAndExpression
+            	    // InternalActionDSL.g:2371:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalActionDSL.g:2372:6: lv_rightOperand_3_0= ruleXAndExpression
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
-            	      	    
+
+            	      						newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0());
+            	      					
             	    }
-            	    pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression4783);
+            	    pushFollow(FOLLOW_50);
             	    lv_rightOperand_3_0=ruleXAndExpression();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_3_0, 
-            	              		"XAndExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XAndExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -5920,7 +6671,7 @@
             	    break;
 
             	default :
-            	    break loop33;
+            	    break loop38;
                 }
             } while (true);
 
@@ -5931,14 +6682,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5947,7 +6700,7 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2013:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    // InternalActionDSL.g:2394:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
     public final String entryRuleOpOr() throws RecognitionException {
         String current = null;
 
@@ -5955,13 +6708,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2014:2: (iv_ruleOpOr= ruleOpOr EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2015:2: iv_ruleOpOr= ruleOpOr EOF
+            // InternalActionDSL.g:2394:44: (iv_ruleOpOr= ruleOpOr EOF )
+            // InternalActionDSL.g:2395:2: iv_ruleOpOr= ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOrRule()); 
             }
-            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr4822);
+            pushFollow(FOLLOW_1);
             iv_ruleOpOr=ruleOpOr();
 
             state._fsp--;
@@ -5969,16 +6722,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpOr.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr4833); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5987,37 +6740,40 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2022:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
+    // InternalActionDSL.g:2401:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
     public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2025:28: (kw= '||' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2027:2: kw= '||'
+            // InternalActionDSL.g:2407:2: (kw= '||' )
+            // InternalActionDSL.g:2408:2: kw= '||'
             {
-            kw=(Token)match(input,52,FOLLOW_52_in_ruleOpOr4870); if (state.failed) return current;
+            kw=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                      current.merge(kw);
-                      newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
-                  
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword());
+              	
             }
 
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -6026,7 +6782,7 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2040:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    // InternalActionDSL.g:2416:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
     public final EObject entryRuleXAndExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6034,13 +6790,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2041:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2042:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            // InternalActionDSL.g:2416:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // InternalActionDSL.g:2417:2: iv_ruleXAndExpression= ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAndExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression4909);
+            pushFollow(FOLLOW_1);
             iv_ruleXAndExpression=ruleXAndExpression();
 
             state._fsp--;
@@ -6048,16 +6804,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAndExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression4919); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -6066,7 +6822,7 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2049:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
+    // InternalActionDSL.g:2423:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
     public final EObject ruleXAndExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6075,98 +6831,99 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2052:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2053:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalActionDSL.g:2429:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // InternalActionDSL.g:2430:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2053:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2054:5: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalActionDSL.g:2430:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalActionDSL.g:2431:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression4966);
+            pushFollow(FOLLOW_51);
             this_XEqualityExpression_0=ruleXEqualityExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XEqualityExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XEqualityExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2062:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
-            loop34:
+            // InternalActionDSL.g:2439:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            loop39:
             do {
-                int alt34=2;
-                int LA34_0 = input.LA(1);
+                int alt39=2;
+                int LA39_0 = input.LA(1);
 
-                if ( (LA34_0==53) ) {
-                    int LA34_2 = input.LA(2);
+                if ( (LA39_0==63) ) {
+                    int LA39_2 = input.LA(2);
 
-                    if ( (synpred10_InternalActionDSL()) ) {
-                        alt34=1;
+                    if ( (synpred9_InternalActionDSL()) ) {
+                        alt39=1;
                     }
 
 
                 }
 
 
-                switch (alt34) {
+                switch (alt39) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2062:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalActionDSL.g:2440:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2062:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2062:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    // InternalActionDSL.g:2440:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // InternalActionDSL.g:2441:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2067:6: ( () ( ( ruleOpAnd ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2067:7: () ( ( ruleOpAnd ) )
+            	    // InternalActionDSL.g:2451:5: ( () ( ( ruleOpAnd ) ) )
+            	    // InternalActionDSL.g:2452:6: () ( ( ruleOpAnd ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2067:7: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2068:5: 
+            	    // InternalActionDSL.g:2452:6: ()
+            	    // InternalActionDSL.g:2453:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2073:2: ( ( ruleOpAnd ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2074:1: ( ruleOpAnd )
+            	    // InternalActionDSL.g:2459:6: ( ( ruleOpAnd ) )
+            	    // InternalActionDSL.g:2460:7: ( ruleOpAnd )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2074:1: ( ruleOpAnd )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2075:3: ruleOpAnd
+            	    // InternalActionDSL.g:2460:7: ( ruleOpAnd )
+            	    // InternalActionDSL.g:2461:8: ruleOpAnd
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXAndExpressionRule());
-            	      	        }
-            	              
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXAndExpressionRule());
+            	      								}
+            	      							
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
+
+            	      								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
             	    }
-            	    pushFollow(FOLLOW_ruleOpAnd_in_ruleXAndExpression5019);
+            	    pushFollow(FOLLOW_41);
             	    ruleOpAnd();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -6180,1261 +6937,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2088:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2089:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalActionDSL.g:2477:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalActionDSL.g:2478:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2089:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2090:3: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    // InternalActionDSL.g:2478:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalActionDSL.g:2479:6: lv_rightOperand_3_0= ruleXEqualityExpression
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
-            	      	    
+
+            	      						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
+            	      					
             	    }
-            	    pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5042);
+            	    pushFollow(FOLLOW_51);
             	    lv_rightOperand_3_0=ruleXEqualityExpression();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_3_0, 
-            	              		"XEqualityExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop34;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXAndExpression"
-
-
-    // $ANTLR start "entryRuleOpAnd"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2114:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
-    public final String entryRuleOpAnd() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2115:2: (iv_ruleOpAnd= ruleOpAnd EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2116:2: iv_ruleOpAnd= ruleOpAnd EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpAndRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd5081);
-            iv_ruleOpAnd=ruleOpAnd();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpAnd.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd5092); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpAnd"
-
-
-    // $ANTLR start "ruleOpAnd"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2123:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
-    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2126:28: (kw= '&&' )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2128:2: kw= '&&'
-            {
-            kw=(Token)match(input,53,FOLLOW_53_in_ruleOpAnd5129); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                      current.merge(kw);
-                      newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
-                  
-            }
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpAnd"
-
-
-    // $ANTLR start "entryRuleXEqualityExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2141:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
-    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXEqualityExpression = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2142:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2143:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression5168);
-            iv_ruleXEqualityExpression=ruleXEqualityExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXEqualityExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression5178); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXEqualityExpression"
-
-
-    // $ANTLR start "ruleXEqualityExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2150:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
-    public final EObject ruleXEqualityExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject this_XRelationalExpression_0 = null;
-
-        EObject lv_rightOperand_3_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2153:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2154:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2154:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2155:5: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5225);
-            this_XRelationalExpression_0=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XRelationalExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2163:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
-            loop35:
-            do {
-                int alt35=2;
-                switch ( input.LA(1) ) {
-                case 54:
-                    {
-                    int LA35_2 = input.LA(2);
-
-                    if ( (synpred11_InternalActionDSL()) ) {
-                        alt35=1;
-                    }
-
-
-                    }
-                    break;
-                case 55:
-                    {
-                    int LA35_3 = input.LA(2);
-
-                    if ( (synpred11_InternalActionDSL()) ) {
-                        alt35=1;
-                    }
-
-
-                    }
-                    break;
-                case 56:
-                    {
-                    int LA35_4 = input.LA(2);
-
-                    if ( (synpred11_InternalActionDSL()) ) {
-                        alt35=1;
-                    }
-
-
-                    }
-                    break;
-                case 57:
-                    {
-                    int LA35_5 = input.LA(2);
-
-                    if ( (synpred11_InternalActionDSL()) ) {
-                        alt35=1;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt35) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2163:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2163:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2163:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2168:6: ( () ( ( ruleOpEquality ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2168:7: () ( ( ruleOpEquality ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2168:7: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2169:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2174:2: ( ( ruleOpEquality ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2175:1: ( ruleOpEquality )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2175:1: ( ruleOpEquality )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2176:3: ruleOpEquality
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXEqualityExpressionRule());
-            	      	        }
-            	              
-            	    }
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleOpEquality_in_ruleXEqualityExpression5278);
-            	    ruleOpEquality();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2189:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2190:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2190:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2191:3: lv_rightOperand_3_0= ruleXRelationalExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5301);
-            	    lv_rightOperand_3_0=ruleXRelationalExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_3_0, 
-            	              		"XRelationalExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop35;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXEqualityExpression"
-
-
-    // $ANTLR start "entryRuleOpEquality"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2215:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
-    public final String entryRuleOpEquality() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2216:2: (iv_ruleOpEquality= ruleOpEquality EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2217:2: iv_ruleOpEquality= ruleOpEquality EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpEqualityRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality5340);
-            iv_ruleOpEquality=ruleOpEquality();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpEquality.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality5351); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpEquality"
-
-
-    // $ANTLR start "ruleOpEquality"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2224:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
-    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2227:28: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2228:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2228:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            int alt36=4;
-            switch ( input.LA(1) ) {
-            case 54:
-                {
-                alt36=1;
-                }
-                break;
-            case 55:
-                {
-                alt36=2;
-                }
-                break;
-            case 56:
-                {
-                alt36=3;
-                }
-                break;
-            case 57:
-                {
-                alt36=4;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 36, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt36) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2229:2: kw= '=='
-                    {
-                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpEquality5389); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2236:2: kw= '!='
-                    {
-                    kw=(Token)match(input,55,FOLLOW_55_in_ruleOpEquality5408); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 3 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2243:2: kw= '==='
-                    {
-                    kw=(Token)match(input,56,FOLLOW_56_in_ruleOpEquality5427); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 4 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2250:2: kw= '!=='
-                    {
-                    kw=(Token)match(input,57,FOLLOW_57_in_ruleOpEquality5446); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpEquality"
-
-
-    // $ANTLR start "entryRuleXRelationalExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2263:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
-    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXRelationalExpression = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2264:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2265:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression5486);
-            iv_ruleXRelationalExpression=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXRelationalExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression5496); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXRelationalExpression"
-
-
-    // $ANTLR start "ruleXRelationalExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2272:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
-    public final EObject ruleXRelationalExpression() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_2=null;
-        EObject this_XOtherOperatorExpression_0 = null;
-
-        EObject lv_type_3_0 = null;
-
-        EObject lv_rightOperand_6_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2275:28: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2276:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2276:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2277:5: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression5543);
-            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XOtherOperatorExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2285:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
-            loop37:
-            do {
-                int alt37=3;
-                switch ( input.LA(1) ) {
-                case 49:
-                    {
-                    int LA37_2 = input.LA(2);
-
-                    if ( (synpred13_InternalActionDSL()) ) {
-                        alt37=2;
-                    }
-
-
-                    }
-                    break;
-                case 50:
-                    {
-                    int LA37_3 = input.LA(2);
-
-                    if ( (synpred13_InternalActionDSL()) ) {
-                        alt37=2;
-                    }
-
-
-                    }
-                    break;
-                case 58:
-                    {
-                    int LA37_4 = input.LA(2);
-
-                    if ( (synpred12_InternalActionDSL()) ) {
-                        alt37=1;
-                    }
-
-
-                    }
-                    break;
-                case 51:
-                    {
-                    int LA37_5 = input.LA(2);
-
-                    if ( (synpred13_InternalActionDSL()) ) {
-                        alt37=2;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt37) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2285:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2285:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2285:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2285:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2285:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2287:5: ( () otherlv_2= 'instanceof' )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2287:6: () otherlv_2= 'instanceof'
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2287:6: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2288:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    otherlv_2=(Token)match(input,58,FOLLOW_58_in_ruleXRelationalExpression5579); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
-            	          
-            	    }
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2297:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2298:1: (lv_type_3_0= ruleJvmTypeReference )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2298:1: (lv_type_3_0= ruleJvmTypeReference )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2299:3: lv_type_3_0= ruleJvmTypeReference
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression5602);
-            	    lv_type_3_0=ruleJvmTypeReference();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"type",
-            	              		lv_type_3_0, 
-            	              		"JvmTypeReference");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-            	case 2 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2316:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2316:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2316:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2316:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2316:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2321:6: ( () ( ( ruleOpCompare ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2321:7: () ( ( ruleOpCompare ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2321:7: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2322:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2327:2: ( ( ruleOpCompare ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2328:1: ( ruleOpCompare )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2328:1: ( ruleOpCompare )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2329:3: ruleOpCompare
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXRelationalExpressionRule());
-            	      	        }
-            	              
-            	    }
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleOpCompare_in_ruleXRelationalExpression5663);
-            	    ruleOpCompare();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2342:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2343:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2343:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2344:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression5686);
-            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_6_0, 
-            	              		"XOtherOperatorExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop37;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXRelationalExpression"
-
-
-    // $ANTLR start "entryRuleOpCompare"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2368:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
-    public final String entryRuleOpCompare() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpCompare = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2369:2: (iv_ruleOpCompare= ruleOpCompare EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2370:2: iv_ruleOpCompare= ruleOpCompare EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpCompareRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare5726);
-            iv_ruleOpCompare=ruleOpCompare();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpCompare.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare5737); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpCompare"
-
-
-    // $ANTLR start "ruleOpCompare"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2377:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
-    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2380:28: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2381:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2381:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
-            int alt38=4;
-            switch ( input.LA(1) ) {
-            case 51:
-                {
-                alt38=1;
-                }
-                break;
-            case 49:
-                {
-                int LA38_2 = input.LA(2);
-
-                if ( (LA38_2==EOF||(LA38_2>=RULE_ID && LA38_2<=RULE_DECIMAL)||LA38_2==14||LA38_2==33||LA38_2==37||(LA38_2>=41 && LA38_2<=42)||LA38_2==49||(LA38_2>=65 && LA38_2<=66)||LA38_2==70||LA38_2==78||LA38_2==80||(LA38_2>=84 && LA38_2<=86)||(LA38_2>=89 && LA38_2<=100)||LA38_2==102) ) {
-                    alt38=4;
-                }
-                else if ( (LA38_2==40) ) {
-                    alt38=2;
-                }
-                else {
-                    if (state.backtracking>0) {state.failed=true; return current;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 38, 2, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case 50:
-                {
-                alt38=3;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 38, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt38) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2382:2: kw= '>='
-                    {
-                    kw=(Token)match(input,51,FOLLOW_51_in_ruleOpCompare5775); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2388:6: (kw= '<' kw= '=' )
-                    {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2388:6: (kw= '<' kw= '=' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2389:2: kw= '<' kw= '='
-                    {
-                    kw=(Token)match(input,49,FOLLOW_49_in_ruleOpCompare5795); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
-                          
-                    }
-                    kw=(Token)match(input,40,FOLLOW_40_in_ruleOpCompare5808); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
-                          
-                    }
-
-                    }
-
-
-                    }
-                    break;
-                case 3 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2402:2: kw= '>'
-                    {
-                    kw=(Token)match(input,50,FOLLOW_50_in_ruleOpCompare5828); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 4 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2409:2: kw= '<'
-                    {
-                    kw=(Token)match(input,49,FOLLOW_49_in_ruleOpCompare5847); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpCompare"
-
-
-    // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2422:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
-    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXOtherOperatorExpression = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2423:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2424:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression5887);
-            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXOtherOperatorExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression5897); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXOtherOperatorExpression"
-
-
-    // $ANTLR start "ruleXOtherOperatorExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2431:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
-    public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject this_XAdditiveExpression_0 = null;
-
-        EObject lv_rightOperand_3_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2434:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2435:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2435:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2436:5: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression5944);
-            this_XAdditiveExpression_0=ruleXAdditiveExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XAdditiveExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2444:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
-            loop39:
-            do {
-                int alt39=2;
-                alt39 = dfa39.predict(input);
-                switch (alt39) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2444:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2444:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2444:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2449:6: ( () ( ( ruleOpOther ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2449:7: () ( ( ruleOpOther ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2449:7: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2450:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2455:2: ( ( ruleOpOther ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2456:1: ( ruleOpOther )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2456:1: ( ruleOpOther )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2457:3: ruleOpOther
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
-            	      	        }
-            	              
-            	    }
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression5997);
-            	    ruleOpOther();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2470:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2471:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2471:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2472:3: lv_rightOperand_3_0= ruleXAdditiveExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6020);
-            	    lv_rightOperand_3_0=ruleXAdditiveExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_3_0, 
-            	              		"XAdditiveExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XEqualityExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -7458,14 +6988,1261 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAndExpression"
+
+
+    // $ANTLR start "entryRuleOpAnd"
+    // InternalActionDSL.g:2501:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
+    public final String entryRuleOpAnd() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
+
+
+        try {
+            // InternalActionDSL.g:2501:45: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // InternalActionDSL.g:2502:2: iv_ruleOpAnd= ruleOpAnd EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpAndRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpAnd=ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpAnd.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpAnd"
+
+
+    // $ANTLR start "ruleOpAnd"
+    // InternalActionDSL.g:2508:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
+    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:2514:2: (kw= '&&' )
+            // InternalActionDSL.g:2515:2: kw= '&&'
+            {
+            kw=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
+              	
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpAnd"
+
+
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // InternalActionDSL.g:2523:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
+    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXEqualityExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:2523:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // InternalActionDSL.g:2524:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXEqualityExpression=ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXEqualityExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXEqualityExpression"
+
+
+    // $ANTLR start "ruleXEqualityExpression"
+    // InternalActionDSL.g:2530:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
+    public final EObject ruleXEqualityExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XRelationalExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:2536:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // InternalActionDSL.g:2537:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            {
+            // InternalActionDSL.g:2537:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalActionDSL.g:2538:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_52);
+            this_XRelationalExpression_0=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XRelationalExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalActionDSL.g:2546:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            loop40:
+            do {
+                int alt40=2;
+                switch ( input.LA(1) ) {
+                case 64:
+                    {
+                    int LA40_2 = input.LA(2);
+
+                    if ( (synpred10_InternalActionDSL()) ) {
+                        alt40=1;
+                    }
+
+
+                    }
+                    break;
+                case 65:
+                    {
+                    int LA40_3 = input.LA(2);
+
+                    if ( (synpred10_InternalActionDSL()) ) {
+                        alt40=1;
+                    }
+
+
+                    }
+                    break;
+                case 66:
+                    {
+                    int LA40_4 = input.LA(2);
+
+                    if ( (synpred10_InternalActionDSL()) ) {
+                        alt40=1;
+                    }
+
+
+                    }
+                    break;
+                case 67:
+                    {
+                    int LA40_5 = input.LA(2);
+
+                    if ( (synpred10_InternalActionDSL()) ) {
+                        alt40=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt40) {
+            	case 1 :
+            	    // InternalActionDSL.g:2547:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    {
+            	    // InternalActionDSL.g:2547:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // InternalActionDSL.g:2548:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
+            	    {
+            	    // InternalActionDSL.g:2558:5: ( () ( ( ruleOpEquality ) ) )
+            	    // InternalActionDSL.g:2559:6: () ( ( ruleOpEquality ) )
+            	    {
+            	    // InternalActionDSL.g:2559:6: ()
+            	    // InternalActionDSL.g:2560:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalActionDSL.g:2566:6: ( ( ruleOpEquality ) )
+            	    // InternalActionDSL.g:2567:7: ( ruleOpEquality )
+            	    {
+            	    // InternalActionDSL.g:2567:7: ( ruleOpEquality )
+            	    // InternalActionDSL.g:2568:8: ruleOpEquality
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+            	      								}
+            	      							
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      								newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
+            	    }
+            	    pushFollow(FOLLOW_41);
+            	    ruleOpEquality();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalActionDSL.g:2584:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalActionDSL.g:2585:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    {
+            	    // InternalActionDSL.g:2585:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalActionDSL.g:2586:6: lv_rightOperand_3_0= ruleXRelationalExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_52);
+            	    lv_rightOperand_3_0=ruleXRelationalExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XRelationalExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop40;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXEqualityExpression"
+
+
+    // $ANTLR start "entryRuleOpEquality"
+    // InternalActionDSL.g:2608:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    public final String entryRuleOpEquality() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
+
+
+        try {
+            // InternalActionDSL.g:2608:50: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // InternalActionDSL.g:2609:2: iv_ruleOpEquality= ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpEquality=ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpEquality.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpEquality"
+
+
+    // $ANTLR start "ruleOpEquality"
+    // InternalActionDSL.g:2615:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
+    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:2621:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // InternalActionDSL.g:2622:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            {
+            // InternalActionDSL.g:2622:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            int alt41=4;
+            switch ( input.LA(1) ) {
+            case 64:
+                {
+                alt41=1;
+                }
+                break;
+            case 65:
+                {
+                alt41=2;
+                }
+                break;
+            case 66:
+                {
+                alt41=3;
+                }
+                break;
+            case 67:
+                {
+                alt41=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 41, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt41) {
+                case 1 :
+                    // InternalActionDSL.g:2623:3: kw= '=='
+                    {
+                    kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2629:3: kw= '!='
+                    {
+                    kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:2635:3: kw= '==='
+                    {
+                    kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:2641:3: kw= '!=='
+                    {
+                    kw=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3());
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpEquality"
+
+
+    // $ANTLR start "entryRuleXRelationalExpression"
+    // InternalActionDSL.g:2650:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXRelationalExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:2650:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // InternalActionDSL.g:2651:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXRelationalExpression=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXRelationalExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXRelationalExpression"
+
+
+    // $ANTLR start "ruleXRelationalExpression"
+    // InternalActionDSL.g:2657:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
+    public final EObject ruleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_XOtherOperatorExpression_0 = null;
+
+        EObject lv_type_3_0 = null;
+
+        EObject lv_rightOperand_6_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:2663:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // InternalActionDSL.g:2664:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            {
+            // InternalActionDSL.g:2664:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalActionDSL.g:2665:3: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_53);
+            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XOtherOperatorExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalActionDSL.g:2673:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            loop42:
+            do {
+                int alt42=3;
+                switch ( input.LA(1) ) {
+                case 59:
+                    {
+                    int LA42_2 = input.LA(2);
+
+                    if ( (synpred12_InternalActionDSL()) ) {
+                        alt42=2;
+                    }
+
+
+                    }
+                    break;
+                case 60:
+                    {
+                    int LA42_3 = input.LA(2);
+
+                    if ( (synpred12_InternalActionDSL()) ) {
+                        alt42=2;
+                    }
+
+
+                    }
+                    break;
+                case 68:
+                    {
+                    int LA42_4 = input.LA(2);
+
+                    if ( (synpred11_InternalActionDSL()) ) {
+                        alt42=1;
+                    }
+
+
+                    }
+                    break;
+                case 61:
+                    {
+                    int LA42_5 = input.LA(2);
+
+                    if ( (synpred12_InternalActionDSL()) ) {
+                        alt42=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt42) {
+            	case 1 :
+            	    // InternalActionDSL.g:2674:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    {
+            	    // InternalActionDSL.g:2674:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalActionDSL.g:2675:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // InternalActionDSL.g:2675:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // InternalActionDSL.g:2676:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    {
+            	    // InternalActionDSL.g:2682:6: ( () otherlv_2= 'instanceof' )
+            	    // InternalActionDSL.g:2683:7: () otherlv_2= 'instanceof'
+            	    {
+            	    // InternalActionDSL.g:2683:7: ()
+            	    // InternalActionDSL.g:2684:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,68,FOLLOW_54); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalActionDSL.g:2696:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalActionDSL.g:2697:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // InternalActionDSL.g:2697:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalActionDSL.g:2698:7: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_53);
+            	    lv_type_3_0=ruleJvmTypeReference();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							if (current==null) {
+            	      								current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      							}
+            	      							set(
+            	      								current,
+            	      								"type",
+            	      								lv_type_3_0,
+            	      								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // InternalActionDSL.g:2717:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    {
+            	    // InternalActionDSL.g:2717:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalActionDSL.g:2718:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    {
+            	    // InternalActionDSL.g:2718:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // InternalActionDSL.g:2719:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    {
+            	    // InternalActionDSL.g:2729:6: ( () ( ( ruleOpCompare ) ) )
+            	    // InternalActionDSL.g:2730:7: () ( ( ruleOpCompare ) )
+            	    {
+            	    // InternalActionDSL.g:2730:7: ()
+            	    // InternalActionDSL.g:2731:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalActionDSL.g:2737:7: ( ( ruleOpCompare ) )
+            	    // InternalActionDSL.g:2738:8: ( ruleOpCompare )
+            	    {
+            	    // InternalActionDSL.g:2738:8: ( ruleOpCompare )
+            	    // InternalActionDSL.g:2739:9: ruleOpCompare
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      									if (current==null) {
+            	      										current = createModelElement(grammarAccess.getXRelationalExpressionRule());
+            	      									}
+            	      								
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      									newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
+            	      								
+            	    }
+            	    pushFollow(FOLLOW_41);
+            	    ruleOpCompare();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      									afterParserOrEnumRuleCall();
+            	      								
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalActionDSL.g:2755:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalActionDSL.g:2756:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    {
+            	    // InternalActionDSL.g:2756:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalActionDSL.g:2757:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_53);
+            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							if (current==null) {
+            	      								current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      							}
+            	      							set(
+            	      								current,
+            	      								"rightOperand",
+            	      								lv_rightOperand_6_0,
+            	      								"org.eclipse.xtext.xbase.Xbase.XOtherOperatorExpression");
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop42;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXRelationalExpression"
+
+
+    // $ANTLR start "entryRuleOpCompare"
+    // InternalActionDSL.g:2780:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    public final String entryRuleOpCompare() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpCompare = null;
+
+
+        try {
+            // InternalActionDSL.g:2780:49: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // InternalActionDSL.g:2781:2: iv_ruleOpCompare= ruleOpCompare EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpCompareRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpCompare=ruleOpCompare();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpCompare.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpCompare"
+
+
+    // $ANTLR start "ruleOpCompare"
+    // InternalActionDSL.g:2787:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
+    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:2793:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // InternalActionDSL.g:2794:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            {
+            // InternalActionDSL.g:2794:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            int alt43=4;
+            switch ( input.LA(1) ) {
+            case 61:
+                {
+                alt43=1;
+                }
+                break;
+            case 59:
+                {
+                int LA43_2 = input.LA(2);
+
+                if ( (LA43_2==50) ) {
+                    alt43=2;
+                }
+                else if ( (LA43_2==EOF||(LA43_2>=RULE_ID && LA43_2<=RULE_DECIMAL)||LA43_2==14||(LA43_2>=40 && LA43_2<=42)||LA43_2==47||(LA43_2>=51 && LA43_2<=52)||LA43_2==59||(LA43_2>=75 && LA43_2<=76)||LA43_2==80||LA43_2==88||LA43_2==90||(LA43_2>=94 && LA43_2<=96)||(LA43_2>=99 && LA43_2<=108)||LA43_2==110) ) {
+                    alt43=4;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 43, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 60:
+                {
+                alt43=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 43, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt43) {
+                case 1 :
+                    // InternalActionDSL.g:2795:3: kw= '>='
+                    {
+                    kw=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:2801:3: (kw= '<' kw= '=' )
+                    {
+                    // InternalActionDSL.g:2801:3: (kw= '<' kw= '=' )
+                    // InternalActionDSL.g:2802:4: kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,59,FOLLOW_40); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
+                      			
+                    }
+                    kw=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:2814:3: kw= '>'
+                    {
+                    kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:2820:3: kw= '<'
+                    {
+                    kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3());
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpCompare"
+
+
+    // $ANTLR start "entryRuleXOtherOperatorExpression"
+    // InternalActionDSL.g:2829:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXOtherOperatorExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:2829:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // InternalActionDSL.g:2830:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXOtherOperatorExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXOtherOperatorExpression"
+
+
+    // $ANTLR start "ruleXOtherOperatorExpression"
+    // InternalActionDSL.g:2836:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
+    public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XAdditiveExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:2842:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // InternalActionDSL.g:2843:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            {
+            // InternalActionDSL.g:2843:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalActionDSL.g:2844:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_55);
+            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XAdditiveExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalActionDSL.g:2852:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            loop44:
+            do {
+                int alt44=2;
+                alt44 = dfa44.predict(input);
+                switch (alt44) {
+            	case 1 :
+            	    // InternalActionDSL.g:2853:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    {
+            	    // InternalActionDSL.g:2853:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // InternalActionDSL.g:2854:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    {
+            	    // InternalActionDSL.g:2864:5: ( () ( ( ruleOpOther ) ) )
+            	    // InternalActionDSL.g:2865:6: () ( ( ruleOpOther ) )
+            	    {
+            	    // InternalActionDSL.g:2865:6: ()
+            	    // InternalActionDSL.g:2866:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalActionDSL.g:2872:6: ( ( ruleOpOther ) )
+            	    // InternalActionDSL.g:2873:7: ( ruleOpOther )
+            	    {
+            	    // InternalActionDSL.g:2873:7: ( ruleOpOther )
+            	    // InternalActionDSL.g:2874:8: ruleOpOther
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
+            	      								}
+            	      							
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      								newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
+            	    }
+            	    pushFollow(FOLLOW_41);
+            	    ruleOpOther();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalActionDSL.g:2890:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalActionDSL.g:2891:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    {
+            	    // InternalActionDSL.g:2891:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalActionDSL.g:2892:6: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_55);
+            	    lv_rightOperand_3_0=ruleXAdditiveExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XAdditiveExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop44;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
         finally {
         }
         return current;
@@ -7474,7 +8251,7 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2496:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    // InternalActionDSL.g:2914:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
     public final String entryRuleOpOther() throws RecognitionException {
         String current = null;
 
@@ -7482,13 +8259,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2497:2: (iv_ruleOpOther= ruleOpOther EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2498:2: iv_ruleOpOther= ruleOpOther EOF
+            // InternalActionDSL.g:2914:47: (iv_ruleOpOther= ruleOpOther EOF )
+            // InternalActionDSL.g:2915:2: iv_ruleOpOther= ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOtherRule()); 
             }
-            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther6059);
+            pushFollow(FOLLOW_1);
             iv_ruleOpOther=ruleOpOther();
 
             state._fsp--;
@@ -7496,16 +8273,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpOther.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther6070); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -7514,67 +8291,68 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2505:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
+    // InternalActionDSL.g:2921:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
     public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2508:28: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2509:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalActionDSL.g:2927:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // InternalActionDSL.g:2928:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2509:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
-            int alt42=9;
-            alt42 = dfa42.predict(input);
-            switch (alt42) {
+            // InternalActionDSL.g:2928:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            int alt47=9;
+            alt47 = dfa47.predict(input);
+            switch (alt47) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2510:2: kw= '->'
+                    // InternalActionDSL.g:2929:3: kw= '->'
                     {
-                    kw=(Token)match(input,59,FOLLOW_59_in_ruleOpOther6108); if (state.failed) return current;
+                    kw=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2517:2: kw= '..<'
+                    // InternalActionDSL.g:2935:3: kw= '..<'
                     {
-                    kw=(Token)match(input,60,FOLLOW_60_in_ruleOpOther6127); if (state.failed) return current;
+                    kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1());
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2523:6: (kw= '>' kw= '..' )
+                    // InternalActionDSL.g:2941:3: (kw= '>' kw= '..' )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2523:6: (kw= '>' kw= '..' )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2524:2: kw= '>' kw= '..'
+                    // InternalActionDSL.g:2941:3: (kw= '>' kw= '..' )
+                    // InternalActionDSL.g:2942:4: kw= '>' kw= '..'
                     {
-                    kw=(Token)match(input,50,FOLLOW_50_in_ruleOpOther6147); if (state.failed) return current;
+                    kw=(Token)match(input,60,FOLLOW_56); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0());
+                      			
                     }
-                    kw=(Token)match(input,61,FOLLOW_61_in_ruleOpOther6160); if (state.failed) return current;
+                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1());
+                      			
                     }
 
                     }
@@ -7583,61 +8361,61 @@
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2537:2: kw= '..'
+                    // InternalActionDSL.g:2954:3: kw= '..'
                     {
-                    kw=(Token)match(input,61,FOLLOW_61_in_ruleOpOther6180); if (state.failed) return current;
+                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3());
+                      		
                     }
 
                     }
                     break;
                 case 5 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2544:2: kw= '=>'
+                    // InternalActionDSL.g:2960:3: kw= '=>'
                     {
-                    kw=(Token)match(input,62,FOLLOW_62_in_ruleOpOther6199); if (state.failed) return current;
+                    kw=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4());
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2550:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalActionDSL.g:2966:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2550:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2551:2: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalActionDSL.g:2966:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalActionDSL.g:2967:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     {
-                    kw=(Token)match(input,50,FOLLOW_50_in_ruleOpOther6219); if (state.failed) return current;
+                    kw=(Token)match(input,60,FOLLOW_57); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2556:1: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
-                    int alt40=2;
-                    int LA40_0 = input.LA(1);
+                    // InternalActionDSL.g:2972:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    int alt45=2;
+                    int LA45_0 = input.LA(1);
 
-                    if ( (LA40_0==50) ) {
-                        int LA40_1 = input.LA(2);
+                    if ( (LA45_0==60) ) {
+                        int LA45_1 = input.LA(2);
 
-                        if ( (LA40_1==EOF||(LA40_1>=RULE_ID && LA40_1<=RULE_DECIMAL)||LA40_1==14||LA40_1==33||LA40_1==37||(LA40_1>=41 && LA40_1<=42)||LA40_1==49||(LA40_1>=65 && LA40_1<=66)||LA40_1==70||LA40_1==78||LA40_1==80||(LA40_1>=84 && LA40_1<=86)||(LA40_1>=89 && LA40_1<=100)||LA40_1==102) ) {
-                            alt40=2;
+                        if ( (LA45_1==EOF||(LA45_1>=RULE_ID && LA45_1<=RULE_DECIMAL)||LA45_1==14||(LA45_1>=40 && LA45_1<=42)||LA45_1==47||(LA45_1>=51 && LA45_1<=52)||LA45_1==59||(LA45_1>=75 && LA45_1<=76)||LA45_1==80||LA45_1==88||LA45_1==90||(LA45_1>=94 && LA45_1<=96)||(LA45_1>=99 && LA45_1<=108)||LA45_1==110) ) {
+                            alt45=2;
                         }
-                        else if ( (LA40_1==50) && (synpred15_InternalActionDSL())) {
-                            alt40=1;
+                        else if ( (LA45_1==60) && (synpred14_InternalActionDSL())) {
+                            alt45=1;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 40, 1, input);
+                                new NoViableAltException("", 45, 1, input);
 
                             throw nvae;
                         }
@@ -7645,33 +8423,33 @@
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 40, 0, input);
+                            new NoViableAltException("", 45, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt40) {
+                    switch (alt45) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2556:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalActionDSL.g:2973:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2556:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2556:3: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            // InternalActionDSL.g:2973:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalActionDSL.g:2974:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2560:5: (kw= '>' kw= '>' )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2561:2: kw= '>' kw= '>'
+                            // InternalActionDSL.g:2979:6: (kw= '>' kw= '>' )
+                            // InternalActionDSL.g:2980:7: kw= '>' kw= '>'
                             {
-                            kw=(Token)match(input,50,FOLLOW_50_in_ruleOpOther6250); if (state.failed) return current;
+                            kw=(Token)match(input,60,FOLLOW_57); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
-                                  
+                              							current.merge(kw);
+                              							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0());
+                              						
                             }
-                            kw=(Token)match(input,50,FOLLOW_50_in_ruleOpOther6263); if (state.failed) return current;
+                            kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
-                                  
+                              							current.merge(kw);
+                              							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1());
+                              						
                             }
 
                             }
@@ -7683,14 +8461,14 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2574:2: kw= '>'
+                            // InternalActionDSL.g:2993:5: kw= '>'
                             {
-                            kw=(Token)match(input,50,FOLLOW_50_in_ruleOpOther6284); if (state.failed) return current;
+                            kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1());
+                              				
                             }
 
                             }
@@ -7705,72 +8483,72 @@
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2580:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalActionDSL.g:3001:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2580:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2581:2: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalActionDSL.g:3001:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalActionDSL.g:3002:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     {
-                    kw=(Token)match(input,49,FOLLOW_49_in_ruleOpOther6306); if (state.failed) return current;
+                    kw=(Token)match(input,59,FOLLOW_58); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2586:1: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
-                    int alt41=3;
-                    int LA41_0 = input.LA(1);
+                    // InternalActionDSL.g:3007:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    int alt46=3;
+                    int LA46_0 = input.LA(1);
 
-                    if ( (LA41_0==49) ) {
-                        int LA41_1 = input.LA(2);
+                    if ( (LA46_0==59) ) {
+                        int LA46_1 = input.LA(2);
 
-                        if ( (synpred16_InternalActionDSL()) ) {
-                            alt41=1;
+                        if ( (synpred15_InternalActionDSL()) ) {
+                            alt46=1;
                         }
                         else if ( (true) ) {
-                            alt41=2;
+                            alt46=2;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 41, 1, input);
+                                new NoViableAltException("", 46, 1, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( (LA41_0==62) ) {
-                        alt41=3;
+                    else if ( (LA46_0==72) ) {
+                        alt46=3;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 41, 0, input);
+                            new NoViableAltException("", 46, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt41) {
+                    switch (alt46) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2586:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalActionDSL.g:3008:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2586:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2586:3: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            // InternalActionDSL.g:3008:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalActionDSL.g:3009:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                             {
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2590:5: (kw= '<' kw= '<' )
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2591:2: kw= '<' kw= '<'
+                            // InternalActionDSL.g:3014:6: (kw= '<' kw= '<' )
+                            // InternalActionDSL.g:3015:7: kw= '<' kw= '<'
                             {
-                            kw=(Token)match(input,49,FOLLOW_49_in_ruleOpOther6337); if (state.failed) return current;
+                            kw=(Token)match(input,59,FOLLOW_47); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
-                                  
+                              							current.merge(kw);
+                              							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0());
+                              						
                             }
-                            kw=(Token)match(input,49,FOLLOW_49_in_ruleOpOther6350); if (state.failed) return current;
+                            kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
-                                  
+                              							current.merge(kw);
+                              							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1());
+                              						
                             }
 
                             }
@@ -7782,27 +8560,27 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2604:2: kw= '<'
+                            // InternalActionDSL.g:3028:5: kw= '<'
                             {
-                            kw=(Token)match(input,49,FOLLOW_49_in_ruleOpOther6371); if (state.failed) return current;
+                            kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1());
+                              				
                             }
 
                             }
                             break;
                         case 3 :
-                            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2611:2: kw= '=>'
+                            // InternalActionDSL.g:3034:5: kw= '=>'
                             {
-                            kw=(Token)match(input,62,FOLLOW_62_in_ruleOpOther6390); if (state.failed) return current;
+                            kw=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2());
+                              				
                             }
 
                             }
@@ -7817,27 +8595,27 @@
                     }
                     break;
                 case 8 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2618:2: kw= '<>'
+                    // InternalActionDSL.g:3042:3: kw= '<>'
                     {
-                    kw=(Token)match(input,63,FOLLOW_63_in_ruleOpOther6411); if (state.failed) return current;
+                    kw=(Token)match(input,73,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7());
+                      		
                     }
 
                     }
                     break;
                 case 9 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2625:2: kw= '?:'
+                    // InternalActionDSL.g:3048:3: kw= '?:'
                     {
-                    kw=(Token)match(input,64,FOLLOW_64_in_ruleOpOther6430); if (state.failed) return current;
+                    kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8());
+                      		
                     }
 
                     }
@@ -7849,14 +8627,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -7865,7 +8645,7 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2638:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    // InternalActionDSL.g:3057:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
     public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7873,13 +8653,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2639:2: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2640:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            // InternalActionDSL.g:3057:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // InternalActionDSL.g:3058:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression6470);
+            pushFollow(FOLLOW_1);
             iv_ruleXAdditiveExpression=ruleXAdditiveExpression();
 
             state._fsp--;
@@ -7887,16 +8667,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAdditiveExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression6480); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -7905,7 +8685,7 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2647:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
+    // InternalActionDSL.g:3064:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
     public final EObject ruleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7914,107 +8694,108 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2650:28: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2651:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalActionDSL.g:3070:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // InternalActionDSL.g:3071:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2651:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2652:5: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            // InternalActionDSL.g:3071:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalActionDSL.g:3072:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression6527);
+            pushFollow(FOLLOW_59);
             this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XMultiplicativeExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XMultiplicativeExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2660:1: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
-            loop43:
+            // InternalActionDSL.g:3080:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            loop48:
             do {
-                int alt43=2;
-                int LA43_0 = input.LA(1);
+                int alt48=2;
+                int LA48_0 = input.LA(1);
 
-                if ( (LA43_0==65) ) {
-                    int LA43_2 = input.LA(2);
+                if ( (LA48_0==75) ) {
+                    int LA48_2 = input.LA(2);
 
-                    if ( (synpred17_InternalActionDSL()) ) {
-                        alt43=1;
+                    if ( (synpred16_InternalActionDSL()) ) {
+                        alt48=1;
                     }
 
 
                 }
-                else if ( (LA43_0==66) ) {
-                    int LA43_3 = input.LA(2);
+                else if ( (LA48_0==76) ) {
+                    int LA48_3 = input.LA(2);
 
-                    if ( (synpred17_InternalActionDSL()) ) {
-                        alt43=1;
+                    if ( (synpred16_InternalActionDSL()) ) {
+                        alt48=1;
                     }
 
 
                 }
 
 
-                switch (alt43) {
+                switch (alt48) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2660:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalActionDSL.g:3081:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2660:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2660:3: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    // InternalActionDSL.g:3081:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // InternalActionDSL.g:3082:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2665:6: ( () ( ( ruleOpAdd ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2665:7: () ( ( ruleOpAdd ) )
+            	    // InternalActionDSL.g:3092:5: ( () ( ( ruleOpAdd ) ) )
+            	    // InternalActionDSL.g:3093:6: () ( ( ruleOpAdd ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2665:7: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2666:5: 
+            	    // InternalActionDSL.g:3093:6: ()
+            	    // InternalActionDSL.g:3094:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2671:2: ( ( ruleOpAdd ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2672:1: ( ruleOpAdd )
+            	    // InternalActionDSL.g:3100:6: ( ( ruleOpAdd ) )
+            	    // InternalActionDSL.g:3101:7: ( ruleOpAdd )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2672:1: ( ruleOpAdd )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2673:3: ruleOpAdd
+            	    // InternalActionDSL.g:3101:7: ( ruleOpAdd )
+            	    // InternalActionDSL.g:3102:8: ruleOpAdd
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
-            	      	        }
-            	              
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+            	      								}
+            	      							
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
+
+            	      								newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
             	    }
-            	    pushFollow(FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression6580);
+            	    pushFollow(FOLLOW_41);
             	    ruleOpAdd();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -8028,34 +8809,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2686:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2687:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalActionDSL.g:3118:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalActionDSL.g:3119:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2687:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2688:3: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    // InternalActionDSL.g:3119:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalActionDSL.g:3120:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
-            	      	    
+
+            	      						newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0());
+            	      					
             	    }
-            	    pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression6603);
+            	    pushFollow(FOLLOW_59);
             	    lv_rightOperand_3_0=ruleXMultiplicativeExpression();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_3_0, 
-            	              		"XMultiplicativeExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XMultiplicativeExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -8068,7 +8849,7 @@
             	    break;
 
             	default :
-            	    break loop43;
+            	    break loop48;
                 }
             } while (true);
 
@@ -8079,14 +8860,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8095,7 +8878,7 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2712:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    // InternalActionDSL.g:3142:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
     public final String entryRuleOpAdd() throws RecognitionException {
         String current = null;
 
@@ -8103,13 +8886,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2713:2: (iv_ruleOpAdd= ruleOpAdd EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2714:2: iv_ruleOpAdd= ruleOpAdd EOF
+            // InternalActionDSL.g:3142:45: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // InternalActionDSL.g:3143:2: iv_ruleOpAdd= ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpAddRule()); 
             }
-            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd6642);
+            pushFollow(FOLLOW_1);
             iv_ruleOpAdd=ruleOpAdd();
 
             state._fsp--;
@@ -8117,16 +8900,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpAdd.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd6653); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8135,58 +8918,59 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2721:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    // InternalActionDSL.g:3149:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
     public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2724:28: ( (kw= '+' | kw= '-' ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2725:1: (kw= '+' | kw= '-' )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2725:1: (kw= '+' | kw= '-' )
-            int alt44=2;
-            int LA44_0 = input.LA(1);
 
-            if ( (LA44_0==65) ) {
-                alt44=1;
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:3155:2: ( (kw= '+' | kw= '-' ) )
+            // InternalActionDSL.g:3156:2: (kw= '+' | kw= '-' )
+            {
+            // InternalActionDSL.g:3156:2: (kw= '+' | kw= '-' )
+            int alt49=2;
+            int LA49_0 = input.LA(1);
+
+            if ( (LA49_0==75) ) {
+                alt49=1;
             }
-            else if ( (LA44_0==66) ) {
-                alt44=2;
+            else if ( (LA49_0==76) ) {
+                alt49=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 44, 0, input);
+                    new NoViableAltException("", 49, 0, input);
 
                 throw nvae;
             }
-            switch (alt44) {
+            switch (alt49) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2726:2: kw= '+'
+                    // InternalActionDSL.g:3157:3: kw= '+'
                     {
-                    kw=(Token)match(input,65,FOLLOW_65_in_ruleOpAdd6691); if (state.failed) return current;
+                    kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2733:2: kw= '-'
+                    // InternalActionDSL.g:3163:3: kw= '-'
                     {
-                    kw=(Token)match(input,66,FOLLOW_66_in_ruleOpAdd6710); if (state.failed) return current;
+                    kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1());
+                      		
                     }
 
                     }
@@ -8198,14 +8982,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8214,7 +9000,7 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2746:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    // InternalActionDSL.g:3172:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
     public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8222,13 +9008,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2747:2: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2748:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
+            // InternalActionDSL.g:3172:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // InternalActionDSL.g:3173:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression6750);
+            pushFollow(FOLLOW_1);
             iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();
 
             state._fsp--;
@@ -8236,16 +9022,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXMultiplicativeExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression6760); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8254,7 +9040,7 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2755:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
+    // InternalActionDSL.g:3179:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
     public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8263,75 +9049,76 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2758:28: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2759:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalActionDSL.g:3185:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // InternalActionDSL.g:3186:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2759:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2760:5: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            // InternalActionDSL.g:3186:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalActionDSL.g:3187:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression6807);
+            pushFollow(FOLLOW_60);
             this_XUnaryOperation_0=ruleXUnaryOperation();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XUnaryOperation_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XUnaryOperation_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2768:1: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
-            loop45:
+            // InternalActionDSL.g:3195:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            loop50:
             do {
-                int alt45=2;
+                int alt50=2;
                 switch ( input.LA(1) ) {
-                case 35:
+                case 43:
                     {
-                    int LA45_2 = input.LA(2);
+                    int LA50_2 = input.LA(2);
 
-                    if ( (synpred18_InternalActionDSL()) ) {
-                        alt45=1;
+                    if ( (synpred17_InternalActionDSL()) ) {
+                        alt50=1;
                     }
 
 
                     }
                     break;
-                case 67:
+                case 77:
                     {
-                    int LA45_3 = input.LA(2);
+                    int LA50_3 = input.LA(2);
 
-                    if ( (synpred18_InternalActionDSL()) ) {
-                        alt45=1;
+                    if ( (synpred17_InternalActionDSL()) ) {
+                        alt50=1;
                     }
 
 
                     }
                     break;
-                case 68:
+                case 78:
                     {
-                    int LA45_4 = input.LA(2);
+                    int LA50_4 = input.LA(2);
 
-                    if ( (synpred18_InternalActionDSL()) ) {
-                        alt45=1;
+                    if ( (synpred17_InternalActionDSL()) ) {
+                        alt50=1;
                     }
 
 
                     }
                     break;
-                case 69:
+                case 79:
                     {
-                    int LA45_5 = input.LA(2);
+                    int LA50_5 = input.LA(2);
 
-                    if ( (synpred18_InternalActionDSL()) ) {
-                        alt45=1;
+                    if ( (synpred17_InternalActionDSL()) ) {
+                        alt50=1;
                     }
 
 
@@ -8340,56 +9127,56 @@
 
                 }
 
-                switch (alt45) {
+                switch (alt50) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2768:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalActionDSL.g:3196:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2768:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2768:3: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
+            	    // InternalActionDSL.g:3196:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // InternalActionDSL.g:3197:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2773:6: ( () ( ( ruleOpMulti ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2773:7: () ( ( ruleOpMulti ) )
+            	    // InternalActionDSL.g:3207:5: ( () ( ( ruleOpMulti ) ) )
+            	    // InternalActionDSL.g:3208:6: () ( ( ruleOpMulti ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2773:7: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2774:5: 
+            	    // InternalActionDSL.g:3208:6: ()
+            	    // InternalActionDSL.g:3209:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2779:2: ( ( ruleOpMulti ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2780:1: ( ruleOpMulti )
+            	    // InternalActionDSL.g:3215:6: ( ( ruleOpMulti ) )
+            	    // InternalActionDSL.g:3216:7: ( ruleOpMulti )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2780:1: ( ruleOpMulti )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2781:3: ruleOpMulti
+            	    // InternalActionDSL.g:3216:7: ( ruleOpMulti )
+            	    // InternalActionDSL.g:3217:8: ruleOpMulti
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
-            	      	        }
-            	              
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
+            	      								}
+            	      							
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
+
+            	      								newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
             	    }
-            	    pushFollow(FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression6860);
+            	    pushFollow(FOLLOW_41);
             	    ruleOpMulti();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -8403,34 +9190,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2794:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2795:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalActionDSL.g:3233:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalActionDSL.g:3234:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2795:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2796:3: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    // InternalActionDSL.g:3234:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalActionDSL.g:3235:6: lv_rightOperand_3_0= ruleXUnaryOperation
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
-            	      	    
+
+            	      						newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0());
+            	      					
             	    }
-            	    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression6883);
+            	    pushFollow(FOLLOW_60);
             	    lv_rightOperand_3_0=ruleXUnaryOperation();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_3_0, 
-            	              		"XUnaryOperation");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XUnaryOperation");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -8443,7 +9230,7 @@
             	    break;
 
             	default :
-            	    break loop45;
+            	    break loop50;
                 }
             } while (true);
 
@@ -8454,14 +9241,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8470,7 +9259,7 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2820:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    // InternalActionDSL.g:3257:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
     public final String entryRuleOpMulti() throws RecognitionException {
         String current = null;
 
@@ -8478,13 +9267,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2821:2: (iv_ruleOpMulti= ruleOpMulti EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2822:2: iv_ruleOpMulti= ruleOpMulti EOF
+            // InternalActionDSL.g:3257:47: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // InternalActionDSL.g:3258:2: iv_ruleOpMulti= ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiRule()); 
             }
-            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti6922);
+            pushFollow(FOLLOW_1);
             iv_ruleOpMulti=ruleOpMulti();
 
             state._fsp--;
@@ -8492,16 +9281,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpMulti.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti6933); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8510,98 +9299,99 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2829:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
+    // InternalActionDSL.g:3264:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
     public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2832:28: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2833:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            // InternalActionDSL.g:3270:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // InternalActionDSL.g:3271:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2833:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
-            int alt46=4;
+            // InternalActionDSL.g:3271:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            int alt51=4;
             switch ( input.LA(1) ) {
-            case 35:
+            case 43:
                 {
-                alt46=1;
+                alt51=1;
                 }
                 break;
-            case 67:
+            case 77:
                 {
-                alt46=2;
+                alt51=2;
                 }
                 break;
-            case 68:
+            case 78:
                 {
-                alt46=3;
+                alt51=3;
                 }
                 break;
-            case 69:
+            case 79:
                 {
-                alt46=4;
+                alt51=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 46, 0, input);
+                    new NoViableAltException("", 51, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt46) {
+            switch (alt51) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2834:2: kw= '*'
+                    // InternalActionDSL.g:3272:3: kw= '*'
                     {
-                    kw=(Token)match(input,35,FOLLOW_35_in_ruleOpMulti6971); if (state.failed) return current;
+                    kw=(Token)match(input,43,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2841:2: kw= '**'
+                    // InternalActionDSL.g:3278:3: kw= '**'
                     {
-                    kw=(Token)match(input,67,FOLLOW_67_in_ruleOpMulti6990); if (state.failed) return current;
+                    kw=(Token)match(input,77,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1());
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2848:2: kw= '/'
+                    // InternalActionDSL.g:3284:3: kw= '/'
                     {
-                    kw=(Token)match(input,68,FOLLOW_68_in_ruleOpMulti7009); if (state.failed) return current;
+                    kw=(Token)match(input,78,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2());
+                      		
                     }
 
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2855:2: kw= '%'
+                    // InternalActionDSL.g:3290:3: kw= '%'
                     {
-                    kw=(Token)match(input,69,FOLLOW_69_in_ruleOpMulti7028); if (state.failed) return current;
+                    kw=(Token)match(input,79,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3());
+                      		
                     }
 
                     }
@@ -8613,14 +9403,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8629,7 +9421,7 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2868:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    // InternalActionDSL.g:3299:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
     public final EObject entryRuleXUnaryOperation() throws RecognitionException {
         EObject current = null;
 
@@ -8637,13 +9429,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2869:2: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2870:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
+            // InternalActionDSL.g:3299:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // InternalActionDSL.g:3300:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
             }
-            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation7068);
+            pushFollow(FOLLOW_1);
             iv_ruleXUnaryOperation=ruleXUnaryOperation();
 
             state._fsp--;
@@ -8651,16 +9443,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXUnaryOperation; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation7078); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8669,7 +9461,7 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2877:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
+    // InternalActionDSL.g:3306:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
     public final EObject ruleXUnaryOperation() throws RecognitionException {
         EObject current = null;
 
@@ -8678,76 +9470,77 @@
         EObject this_XCastedExpression_3 = null;
 
 
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2880:28: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2881:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2881:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
-            int alt47=2;
-            int LA47_0 = input.LA(1);
 
-            if ( ((LA47_0>=65 && LA47_0<=66)||LA47_0==70) ) {
-                alt47=1;
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:3312:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // InternalActionDSL.g:3313:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            {
+            // InternalActionDSL.g:3313:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            int alt52=2;
+            int LA52_0 = input.LA(1);
+
+            if ( ((LA52_0>=75 && LA52_0<=76)||LA52_0==80) ) {
+                alt52=1;
             }
-            else if ( ((LA47_0>=RULE_ID && LA47_0<=RULE_DECIMAL)||LA47_0==14||LA47_0==33||LA47_0==37||(LA47_0>=41 && LA47_0<=42)||LA47_0==49||LA47_0==78||LA47_0==80||(LA47_0>=84 && LA47_0<=86)||(LA47_0>=89 && LA47_0<=100)||LA47_0==102) ) {
-                alt47=2;
+            else if ( ((LA52_0>=RULE_ID && LA52_0<=RULE_DECIMAL)||LA52_0==14||(LA52_0>=40 && LA52_0<=42)||LA52_0==47||(LA52_0>=51 && LA52_0<=52)||LA52_0==59||LA52_0==88||LA52_0==90||(LA52_0>=94 && LA52_0<=96)||(LA52_0>=99 && LA52_0<=108)||LA52_0==110) ) {
+                alt52=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 47, 0, input);
+                    new NoViableAltException("", 52, 0, input);
 
                 throw nvae;
             }
-            switch (alt47) {
+            switch (alt52) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2881:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalActionDSL.g:3314:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2881:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2881:3: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalActionDSL.g:3314:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalActionDSL.g:3315:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2881:3: ()
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2882:5: 
+                    // InternalActionDSL.g:3315:4: ()
+                    // InternalActionDSL.g:3316:5: 
                     {
                     if ( state.backtracking==0 ) {
 
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
-                                  current);
-                          
+                      					current = forceCreateModelElement(
+                      						grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+                      						current);
+                      				
                     }
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2887:2: ( ( ruleOpUnary ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2888:1: ( ruleOpUnary )
+                    // InternalActionDSL.g:3322:4: ( ( ruleOpUnary ) )
+                    // InternalActionDSL.g:3323:5: ( ruleOpUnary )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2888:1: ( ruleOpUnary )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2889:3: ruleOpUnary
+                    // InternalActionDSL.g:3323:5: ( ruleOpUnary )
+                    // InternalActionDSL.g:3324:6: ruleOpUnary
                     {
                     if ( state.backtracking==0 ) {
 
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getXUnaryOperationRule());
-                      	        }
-                              
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXUnaryOperationRule());
+                      						}
+                      					
                     }
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleOpUnary_in_ruleXUnaryOperation7136);
+                    pushFollow(FOLLOW_41);
                     ruleOpUnary();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                      	        afterParserOrEnumRuleCall();
-                      	    
+
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -8755,34 +9548,34 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2902:2: ( (lv_operand_2_0= ruleXUnaryOperation ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2903:1: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalActionDSL.g:3338:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalActionDSL.g:3339:5: (lv_operand_2_0= ruleXUnaryOperation )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2903:1: (lv_operand_2_0= ruleXUnaryOperation )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2904:3: lv_operand_2_0= ruleXUnaryOperation
+                    // InternalActionDSL.g:3339:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalActionDSL.g:3340:6: lv_operand_2_0= ruleXUnaryOperation
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXUnaryOperation7157);
+                    pushFollow(FOLLOW_2);
                     lv_operand_2_0=ruleXUnaryOperation();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"operand",
-                              		lv_operand_2_0, 
-                              		"XUnaryOperation");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
+                      						}
+                      						set(
+                      							current,
+                      							"operand",
+                      							lv_operand_2_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XUnaryOperation");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -8797,23 +9590,23 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2922:5: this_XCastedExpression_3= ruleXCastedExpression
+                    // InternalActionDSL.g:3359:3: this_XCastedExpression_3= ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation7186);
+                    pushFollow(FOLLOW_2);
                     this_XCastedExpression_3=ruleXCastedExpression();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_XCastedExpression_3; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_XCastedExpression_3;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
@@ -8825,14 +9618,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8841,7 +9636,7 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2938:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    // InternalActionDSL.g:3371:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
     public final String entryRuleOpUnary() throws RecognitionException {
         String current = null;
 
@@ -8849,13 +9644,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2939:2: (iv_ruleOpUnary= ruleOpUnary EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2940:2: iv_ruleOpUnary= ruleOpUnary EOF
+            // InternalActionDSL.g:3371:47: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // InternalActionDSL.g:3372:2: iv_ruleOpUnary= ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpUnaryRule()); 
             }
-            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary7222);
+            pushFollow(FOLLOW_1);
             iv_ruleOpUnary=ruleOpUnary();
 
             state._fsp--;
@@ -8863,16 +9658,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpUnary.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary7233); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8881,80 +9676,81 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2947:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
+    // InternalActionDSL.g:3378:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
     public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2950:28: ( (kw= '!' | kw= '-' | kw= '+' ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2951:1: (kw= '!' | kw= '-' | kw= '+' )
+            // InternalActionDSL.g:3384:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // InternalActionDSL.g:3385:2: (kw= '!' | kw= '-' | kw= '+' )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2951:1: (kw= '!' | kw= '-' | kw= '+' )
-            int alt48=3;
+            // InternalActionDSL.g:3385:2: (kw= '!' | kw= '-' | kw= '+' )
+            int alt53=3;
             switch ( input.LA(1) ) {
-            case 70:
+            case 80:
                 {
-                alt48=1;
+                alt53=1;
                 }
                 break;
-            case 66:
+            case 76:
                 {
-                alt48=2;
+                alt53=2;
                 }
                 break;
-            case 65:
+            case 75:
                 {
-                alt48=3;
+                alt53=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 48, 0, input);
+                    new NoViableAltException("", 53, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt48) {
+            switch (alt53) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2952:2: kw= '!'
+                    // InternalActionDSL.g:3386:3: kw= '!'
                     {
-                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpUnary7271); if (state.failed) return current;
+                    kw=(Token)match(input,80,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2959:2: kw= '-'
+                    // InternalActionDSL.g:3392:3: kw= '-'
                     {
-                    kw=(Token)match(input,66,FOLLOW_66_in_ruleOpUnary7290); if (state.failed) return current;
+                    kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1());
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2966:2: kw= '+'
+                    // InternalActionDSL.g:3398:3: kw= '+'
                     {
-                    kw=(Token)match(input,65,FOLLOW_65_in_ruleOpUnary7309); if (state.failed) return current;
+                    kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2());
+                      		
                     }
 
                     }
@@ -8966,14 +9762,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8982,7 +9780,7 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2979:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    // InternalActionDSL.g:3407:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
     public final EObject entryRuleXCastedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8990,13 +9788,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2980:2: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2981:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
+            // InternalActionDSL.g:3407:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // InternalActionDSL.g:3408:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression7349);
+            pushFollow(FOLLOW_1);
             iv_ruleXCastedExpression=ruleXCastedExpression();
 
             state._fsp--;
@@ -9004,16 +9802,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXCastedExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression7359); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9022,7 +9820,7 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2988:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
+    // InternalActionDSL.g:3414:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
     public final EObject ruleXCastedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9032,76 +9830,77 @@
         EObject lv_type_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2991:28: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2992:1: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalActionDSL.g:3420:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // InternalActionDSL.g:3421:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2992:1: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:2993:5: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            // InternalActionDSL.g:3421:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalActionDSL.g:3422:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXPostfixOperation_in_ruleXCastedExpression7406);
+            pushFollow(FOLLOW_61);
             this_XPostfixOperation_0=ruleXPostfixOperation();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XPostfixOperation_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XPostfixOperation_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3001:1: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
-            loop49:
+            // InternalActionDSL.g:3430:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            loop54:
             do {
-                int alt49=2;
-                int LA49_0 = input.LA(1);
+                int alt54=2;
+                int LA54_0 = input.LA(1);
 
-                if ( (LA49_0==71) ) {
-                    int LA49_2 = input.LA(2);
+                if ( (LA54_0==81) ) {
+                    int LA54_2 = input.LA(2);
 
-                    if ( (synpred19_InternalActionDSL()) ) {
-                        alt49=1;
+                    if ( (synpred18_InternalActionDSL()) ) {
+                        alt54=1;
                     }
 
 
                 }
 
 
-                switch (alt49) {
+                switch (alt54) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3001:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalActionDSL.g:3431:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3001:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3001:3: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    // InternalActionDSL.g:3431:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // InternalActionDSL.g:3432:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3003:5: ( () otherlv_2= 'as' )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3003:6: () otherlv_2= 'as'
+            	    // InternalActionDSL.g:3438:5: ( () otherlv_2= 'as' )
+            	    // InternalActionDSL.g:3439:6: () otherlv_2= 'as'
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3003:6: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3004:5: 
+            	    // InternalActionDSL.g:3439:6: ()
+            	    // InternalActionDSL.g:3440:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    otherlv_2=(Token)match(input,71,FOLLOW_71_in_ruleXCastedExpression7441); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,81,FOLLOW_54); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
-            	          
+            	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+            	      					
             	    }
 
             	    }
@@ -9109,34 +9908,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3013:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3014:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalActionDSL.g:3452:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalActionDSL.g:3453:5: (lv_type_3_0= ruleJvmTypeReference )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3014:1: (lv_type_3_0= ruleJvmTypeReference )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3015:3: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalActionDSL.g:3453:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalActionDSL.g:3454:6: lv_type_3_0= ruleJvmTypeReference
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
-            	      	    
+
+            	      						newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0());
+            	      					
             	    }
-            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression7464);
+            	    pushFollow(FOLLOW_61);
             	    lv_type_3_0=ruleJvmTypeReference();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"type",
-            	              		lv_type_3_0, 
-            	              		"JvmTypeReference");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"type",
+            	      							lv_type_3_0,
+            	      							"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -9149,7 +9948,7 @@
             	    break;
 
             	default :
-            	    break loop49;
+            	    break loop54;
                 }
             } while (true);
 
@@ -9160,14 +9959,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9176,7 +9977,7 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3039:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    // InternalActionDSL.g:3476:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
     public final EObject entryRuleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
@@ -9184,13 +9985,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3040:2: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3041:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
+            // InternalActionDSL.g:3476:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
+            // InternalActionDSL.g:3477:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXPostfixOperationRule()); 
             }
-            pushFollow(FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation7502);
+            pushFollow(FOLLOW_1);
             iv_ruleXPostfixOperation=ruleXPostfixOperation();
 
             state._fsp--;
@@ -9198,16 +9999,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXPostfixOperation; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXPostfixOperation7512); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9216,103 +10017,104 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3048:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
+    // InternalActionDSL.g:3483:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
     public final EObject ruleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
         EObject this_XMemberFeatureCall_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3051:28: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3052:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalActionDSL.g:3489:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
+            // InternalActionDSL.g:3490:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3052:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3053:5: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            // InternalActionDSL.g:3490:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalActionDSL.g:3491:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_ruleXPostfixOperation7559);
+            pushFollow(FOLLOW_62);
             this_XMemberFeatureCall_0=ruleXMemberFeatureCall();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XMemberFeatureCall_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XMemberFeatureCall_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3061:1: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
-            int alt50=2;
-            int LA50_0 = input.LA(1);
+            // InternalActionDSL.g:3499:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            int alt55=2;
+            int LA55_0 = input.LA(1);
 
-            if ( (LA50_0==72) ) {
-                int LA50_1 = input.LA(2);
+            if ( (LA55_0==82) ) {
+                int LA55_1 = input.LA(2);
 
-                if ( (synpred20_InternalActionDSL()) ) {
-                    alt50=1;
+                if ( (synpred19_InternalActionDSL()) ) {
+                    alt55=1;
                 }
             }
-            else if ( (LA50_0==73) ) {
-                int LA50_2 = input.LA(2);
+            else if ( (LA55_0==83) ) {
+                int LA55_2 = input.LA(2);
 
-                if ( (synpred20_InternalActionDSL()) ) {
-                    alt50=1;
+                if ( (synpred19_InternalActionDSL()) ) {
+                    alt55=1;
                 }
             }
-            switch (alt50) {
+            switch (alt55) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3061:2: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
+                    // InternalActionDSL.g:3500:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3066:6: ( () ( ( ruleOpPostfix ) ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3066:7: () ( ( ruleOpPostfix ) )
+                    // InternalActionDSL.g:3510:4: ( () ( ( ruleOpPostfix ) ) )
+                    // InternalActionDSL.g:3511:5: () ( ( ruleOpPostfix ) )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3066:7: ()
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3067:5: 
+                    // InternalActionDSL.g:3511:5: ()
+                    // InternalActionDSL.g:3512:6: 
                     {
                     if ( state.backtracking==0 ) {
 
-                              current = forceCreateModelElementAndSet(
-                                  grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
-                                  current);
-                          
+                      						current = forceCreateModelElementAndSet(
+                      							grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+                      							current);
+                      					
                     }
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3072:2: ( ( ruleOpPostfix ) )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3073:1: ( ruleOpPostfix )
+                    // InternalActionDSL.g:3518:5: ( ( ruleOpPostfix ) )
+                    // InternalActionDSL.g:3519:6: ( ruleOpPostfix )
                     {
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3073:1: ( ruleOpPostfix )
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3074:3: ruleOpPostfix
+                    // InternalActionDSL.g:3519:6: ( ruleOpPostfix )
+                    // InternalActionDSL.g:3520:7: ruleOpPostfix
                     {
                     if ( state.backtracking==0 ) {
 
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getXPostfixOperationRule());
-                      	        }
-                              
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getXPostfixOperationRule());
+                      							}
+                      						
                     }
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
-                      	    
+
+                      							newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0());
+                      						
                     }
-                    pushFollow(FOLLOW_ruleOpPostfix_in_ruleXPostfixOperation7611);
+                    pushFollow(FOLLOW_2);
                     ruleOpPostfix();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                      	        afterParserOrEnumRuleCall();
-                      	    
+
+                      							afterParserOrEnumRuleCall();
+                      						
                     }
 
                     }
@@ -9336,14 +10138,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9352,7 +10156,7 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3095:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
+    // InternalActionDSL.g:3540:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
     public final String entryRuleOpPostfix() throws RecognitionException {
         String current = null;
 
@@ -9360,13 +10164,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3096:2: (iv_ruleOpPostfix= ruleOpPostfix EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3097:2: iv_ruleOpPostfix= ruleOpPostfix EOF
+            // InternalActionDSL.g:3540:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
+            // InternalActionDSL.g:3541:2: iv_ruleOpPostfix= ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpPostfixRule()); 
             }
-            pushFollow(FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix7651);
+            pushFollow(FOLLOW_1);
             iv_ruleOpPostfix=ruleOpPostfix();
 
             state._fsp--;
@@ -9374,16 +10178,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpPostfix.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpPostfix7662); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9392,58 +10196,59 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3104:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
+    // InternalActionDSL.g:3547:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
     public final AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3107:28: ( (kw= '++' | kw= '--' ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3108:1: (kw= '++' | kw= '--' )
-            {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3108:1: (kw= '++' | kw= '--' )
-            int alt51=2;
-            int LA51_0 = input.LA(1);
 
-            if ( (LA51_0==72) ) {
-                alt51=1;
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:3553:2: ( (kw= '++' | kw= '--' ) )
+            // InternalActionDSL.g:3554:2: (kw= '++' | kw= '--' )
+            {
+            // InternalActionDSL.g:3554:2: (kw= '++' | kw= '--' )
+            int alt56=2;
+            int LA56_0 = input.LA(1);
+
+            if ( (LA56_0==82) ) {
+                alt56=1;
             }
-            else if ( (LA51_0==73) ) {
-                alt51=2;
+            else if ( (LA56_0==83) ) {
+                alt56=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 51, 0, input);
+                    new NoViableAltException("", 56, 0, input);
 
                 throw nvae;
             }
-            switch (alt51) {
+            switch (alt56) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3109:2: kw= '++'
+                    // InternalActionDSL.g:3555:3: kw= '++'
                     {
-                    kw=(Token)match(input,72,FOLLOW_72_in_ruleOpPostfix7700); if (state.failed) return current;
+                    kw=(Token)match(input,82,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3116:2: kw= '--'
+                    // InternalActionDSL.g:3561:3: kw= '--'
                     {
-                    kw=(Token)match(input,73,FOLLOW_73_in_ruleOpPostfix7719); if (state.failed) return current;
+                    kw=(Token)match(input,83,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1());
+                      		
                     }
 
                     }
@@ -9455,14 +10260,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9471,7 +10278,7 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3129:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
+    // InternalActionDSL.g:3570:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
     public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -9479,13 +10286,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3130:2: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3131:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
+            // InternalActionDSL.g:3570:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
+            // InternalActionDSL.g:3571:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); 
             }
-            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall7759);
+            pushFollow(FOLLOW_1);
             iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall();
 
             state._fsp--;
@@ -9493,16 +10300,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXMemberFeatureCall; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXMemberFeatureCall7769); if (state.failed) return current;
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
             }
 
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -9511,7 +10318,7 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3138:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) ;
+    // InternalActionDSL.g:3577:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) ;
     public final EObject ruleXMemberFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -9543,70 +10350,71 @@
         EObject lv_memberCallArguments_23_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3141:28: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3142:1: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
+            // InternalActionDSL.g:3583:2: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) )
+            // InternalActionDSL.g:3584:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
             {
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3142:1: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3143:5: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
+            // InternalActionDSL.g:3584:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
+            // InternalActionDSL.g:3585:3: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXPrimaryExpression_in_ruleXMemberFeatureCall7816);
+            pushFollow(FOLLOW_63);
             this_XPrimaryExpression_0=ruleXPrimaryExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XPrimaryExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XPrimaryExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3151:1: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
-            loop60:
+            // InternalActionDSL.g:3593:3: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
+            loop65:
             do {
-                int alt60=3;
+                int alt65=3;
                 switch ( input.LA(1) ) {
-                case 34:
+                case 84:
                     {
-                    int LA60_2 = input.LA(2);
+                    int LA65_2 = input.LA(2);
 
-                    if ( (synpred21_InternalActionDSL()) ) {
-                        alt60=1;
+                    if ( (synpred20_InternalActionDSL()) ) {
+                        alt65=1;
                     }
-                    else if ( (synpred22_InternalActionDSL()) ) {
-                        alt60=2;
+                    else if ( (synpred21_InternalActionDSL()) ) {
+                        alt65=2;
                     }
 
 
                     }
                     break;
-                case 74:
+                case 85:
                     {
-                    int LA60_3 = input.LA(2);
+                    int LA65_3 = input.LA(2);
 
-                    if ( (synpred21_InternalActionDSL()) ) {
-                        alt60=1;
+                    if ( (synpred20_InternalActionDSL()) ) {
+                        alt65=1;
                     }
-                    else if ( (synpred22_InternalActionDSL()) ) {
-                        alt60=2;
+                    else if ( (synpred21_InternalActionDSL()) ) {
+                        alt65=2;
                     }
 
 
                     }
                     break;
-                case 75:
+                case 86:
                     {
-                    int LA60_4 = input.LA(2);
+                    int LA65_4 = input.LA(2);
 
-                    if ( (synpred22_InternalActionDSL()) ) {
-                        alt60=2;
+                    if ( (synpred21_InternalActionDSL()) ) {
+                        alt65=2;
                     }
 
 
@@ -9615,84 +10423,84 @@
 
                 }
 
-                switch (alt60) {
+                switch (alt65) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3151:2: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalActionDSL.g:3594:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3151:2: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3151:3: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalActionDSL.g:3594:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalActionDSL.g:3595:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3151:3: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3151:4: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalActionDSL.g:3595:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+            	    // InternalActionDSL.g:3596:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3164:25: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3164:26: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+            	    // InternalActionDSL.g:3616:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalActionDSL.g:3617:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3164:26: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3165:5: 
+            	    // InternalActionDSL.g:3617:7: ()
+            	    // InternalActionDSL.g:3618:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
-            	                  current);
-            	          
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
+            	      									current);
+            	      							
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3170:2: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
-            	    int alt52=2;
-            	    int LA52_0 = input.LA(1);
+            	    // InternalActionDSL.g:3624:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
+            	    int alt57=2;
+            	    int LA57_0 = input.LA(1);
 
-            	    if ( (LA52_0==34) ) {
-            	        alt52=1;
+            	    if ( (LA57_0==84) ) {
+            	        alt57=1;
             	    }
-            	    else if ( (LA52_0==74) ) {
-            	        alt52=2;
+            	    else if ( (LA57_0==85) ) {
+            	        alt57=2;
             	    }
             	    else {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 52, 0, input);
+            	            new NoViableAltException("", 57, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt52) {
+            	    switch (alt57) {
             	        case 1 :
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3170:4: otherlv_2= '.'
+            	            // InternalActionDSL.g:3625:8: otherlv_2= '.'
             	            {
-            	            otherlv_2=(Token)match(input,34,FOLLOW_34_in_ruleXMemberFeatureCall7888); if (state.failed) return current;
+            	            otherlv_2=(Token)match(input,84,FOLLOW_64); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
-            	                  	newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
-            	                  
+            	              								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
+            	              							
             	            }
 
             	            }
             	            break;
             	        case 2 :
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3175:6: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalActionDSL.g:3630:8: ( (lv_explicitStatic_3_0= '::' ) )
             	            {
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3175:6: ( (lv_explicitStatic_3_0= '::' ) )
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3176:1: (lv_explicitStatic_3_0= '::' )
+            	            // InternalActionDSL.g:3630:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalActionDSL.g:3631:9: (lv_explicitStatic_3_0= '::' )
             	            {
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3176:1: (lv_explicitStatic_3_0= '::' )
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3177:3: lv_explicitStatic_3_0= '::'
+            	            // InternalActionDSL.g:3631:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalActionDSL.g:3632:10: lv_explicitStatic_3_0= '::'
             	            {
-            	            lv_explicitStatic_3_0=(Token)match(input,74,FOLLOW_74_in_ruleXMemberFeatureCall7912); if (state.failed) return current;
+            	            lv_explicitStatic_3_0=(Token)match(input,85,FOLLOW_64); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
-            	                      newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
-            	                  
+            	              										newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
+            	              									
             	            }
             	            if ( state.backtracking==0 ) {
 
-            	              	        if (current==null) {
-            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-            	              	        }
-            	                     		setWithLastConsumed(current, "explicitStatic", true, "::");
-            	              	    
+            	              										if (current==null) {
+            	              											current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+            	              										}
+            	              										setWithLastConsumed(current, "explicitStatic", true, "::");
+            	              									
             	            }
 
             	            }
@@ -9706,33 +10514,33 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3190:3: ( ( ruleFeatureCallID ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3191:1: ( ruleFeatureCallID )
+            	    // InternalActionDSL.g:3645:7: ( ( ruleFeatureCallID ) )
+            	    // InternalActionDSL.g:3646:8: ( ruleFeatureCallID )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3191:1: ( ruleFeatureCallID )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3192:3: ruleFeatureCallID
+            	    // InternalActionDSL.g:3646:8: ( ruleFeatureCallID )
+            	    // InternalActionDSL.g:3647:9: ruleFeatureCallID
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-            	      	        }
-            	              
+            	      									if (current==null) {
+            	      										current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+            	      									}
+            	      								
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
-            	      	    
+
+            	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0());
+            	      								
             	    }
-            	    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleXMemberFeatureCall7949);
+            	    pushFollow(FOLLOW_40);
             	    ruleFeatureCallID();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      									afterParserOrEnumRuleCall();
+            	      								
             	    }
 
             	    }
@@ -9741,19 +10549,19 @@
             	    }
 
             	    if ( state.backtracking==0 ) {
-            	       
-            	              newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
-            	          
+
+            	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3());
+            	      						
             	    }
-            	    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXMemberFeatureCall7965);
+            	    pushFollow(FOLLOW_41);
             	    ruleOpSingleAssign();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	              afterParserOrEnumRuleCall();
-            	          
+
+            	      							afterParserOrEnumRuleCall();
+            	      						
             	    }
 
             	    }
@@ -9761,34 +10569,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3213:3: ( (lv_value_6_0= ruleXAssignment ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3214:1: (lv_value_6_0= ruleXAssignment )
+            	    // InternalActionDSL.g:3670:5: ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalActionDSL.g:3671:6: (lv_value_6_0= ruleXAssignment )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3214:1: (lv_value_6_0= ruleXAssignment )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3215:3: lv_value_6_0= ruleXAssignment
+            	    // InternalActionDSL.g:3671:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalActionDSL.g:3672:7: lv_value_6_0= ruleXAssignment
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
-            	      	    
+
+            	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0());
+            	      						
             	    }
-            	    pushFollow(FOLLOW_ruleXAssignment_in_ruleXMemberFeatureCall7987);
+            	    pushFollow(FOLLOW_63);
             	    lv_value_6_0=ruleXAssignment();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"value",
-            	              		lv_value_6_0, 
-            	              		"XAssignment");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      							if (current==null) {
+            	      								current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+            	      							}
+            	      							set(
+            	      								current,
+            	      								"value",
+            	      								lv_value_6_0,
+            	      								"org.eclipse.xtext.xbase.Xbase.XAssignment");
+            	      							afterParserOrEnumRuleCall();
+            	      						
             	    }
 
             	    }
@@ -9803,91 +10611,91 @@
             	    }
             	    break;
             	case 2 :
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3232:6: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
+            	    // InternalActionDSL.g:3691:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3232:6: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3232:7: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    // InternalActionDSL.g:3691:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
+            	    // InternalActionDSL.g:3692:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3232:7: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3232:8: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalActionDSL.g:3692:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
+            	    // InternalActionDSL.g:3693:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3248:7: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3248:8: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    // InternalActionDSL.g:3713:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalActionDSL.g:3714:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3248:8: ()
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3249:5: 
+            	    // InternalActionDSL.g:3714:7: ()
+            	    // InternalActionDSL.g:3715:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
-            	                  current);
-            	          
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
+            	      									current);
+            	      							
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3254:2: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
-            	    int alt53=3;
+            	    // InternalActionDSL.g:3721:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    int alt58=3;
             	    switch ( input.LA(1) ) {
-            	    case 34:
+            	    case 84:
             	        {
-            	        alt53=1;
+            	        alt58=1;
             	        }
             	        break;
-            	    case 75:
+            	    case 86:
             	        {
-            	        alt53=2;
+            	        alt58=2;
             	        }
             	        break;
-            	    case 74:
+            	    case 85:
             	        {
-            	        alt53=3;
+            	        alt58=3;
             	        }
             	        break;
             	    default:
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 53, 0, input);
+            	            new NoViableAltException("", 58, 0, input);
 
             	        throw nvae;
             	    }
 
-            	    switch (alt53) {
+            	    switch (alt58) {
             	        case 1 :
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3254:4: otherlv_8= '.'
+            	            // InternalActionDSL.g:3722:8: otherlv_8= '.'
             	            {
-            	            otherlv_8=(Token)match(input,34,FOLLOW_34_in_ruleXMemberFeatureCall8073); if (state.failed) return current;
+            	            otherlv_8=(Token)match(input,84,FOLLOW_65); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
-            	                  	newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
-            	                  
+            	              								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
+            	              							
             	            }
 
             	            }
             	            break;
             	        case 2 :
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3259:6: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalActionDSL.g:3727:8: ( (lv_nullSafe_9_0= '?.' ) )
             	            {
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3259:6: ( (lv_nullSafe_9_0= '?.' ) )
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3260:1: (lv_nullSafe_9_0= '?.' )
+            	            // InternalActionDSL.g:3727:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalActionDSL.g:3728:9: (lv_nullSafe_9_0= '?.' )
             	            {
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3260:1: (lv_nullSafe_9_0= '?.' )
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3261:3: lv_nullSafe_9_0= '?.'
+            	            // InternalActionDSL.g:3728:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalActionDSL.g:3729:10: lv_nullSafe_9_0= '?.'
             	            {
-            	            lv_nullSafe_9_0=(Token)match(input,75,FOLLOW_75_in_ruleXMemberFeatureCall8097); if (state.failed) return current;
+            	            lv_nullSafe_9_0=(Token)match(input,86,FOLLOW_65); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
-            	                      newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
-            	                  
+            	              										newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
+            	              									
             	            }
             	            if ( state.backtracking==0 ) {
 
-            	              	        if (current==null) {
-            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-            	              	        }
-            	                     		setWithLastConsumed(current, "nullSafe", true, "?.");
-            	              	    
+            	              										if (current==null) {
+            	              											current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+            	              										}
+            	              										setWithLastConsumed(current, "nullSafe", true, "?.");
+            	              									
             	            }
 
             	            }
@@ -9899,27 +10707,27 @@
             	            }
             	            break;
             	        case 3 :
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3275:6: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalActionDSL.g:3742:8: ( (lv_explicitStatic_10_0= '::' ) )
             	            {
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3275:6: ( (lv_explicitStatic_10_0= '::' ) )
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3276:1: (lv_explicitStatic_10_0= '::' )
+            	            // InternalActionDSL.g:3742:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalActionDSL.g:3743:9: (lv_explicitStatic_10_0= '::' )
             	            {
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3276:1: (lv_explicitStatic_10_0= '::' )
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3277:3: lv_explicitStatic_10_0= '::'
+            	            // InternalActionDSL.g:3743:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalActionDSL.g:3744:10: lv_explicitStatic_10_0= '::'
             	            {
-            	            lv_explicitStatic_10_0=(Token)match(input,74,FOLLOW_74_in_ruleXMemberFeatureCall8134); if (state.failed) return current;
+            	            lv_explicitStatic_10_0=(Token)match(input,85,FOLLOW_65); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
-            	                      newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
-            	                  
+            	              										newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
+            	              									
             	            }
             	            if ( state.backtracking==0 ) {
 
-            	              	        if (current==null) {
-            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
-            	              	        }
-            	                     		setWithLastConsumed(current, "explicitStatic", true, "::");
-            	              	    
+            	              										if (current==null) {
+            	              											current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+            	              										}
+            	              										setWithLastConsumed(current, "explicitStatic", true, "::");
+            	              									
             	            }
 
             	            }
@@ -9939,51 +10747,51 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3290:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
-            	    int alt55=2;
-            	    int LA55_0 = input.LA(1);
+            	    // InternalActionDSL.g:3759:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
+            	    int alt60=2;
+            	    int LA60_0 = input.LA(1);
 
-            	    if ( (LA55_0==49) ) {
-            	        alt55=1;
+            	    if ( (LA60_0==59) ) {
+            	        alt60=1;
             	    }
-            	    switch (alt55) {
+            	    switch (alt60) {
             	        case 1 :
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3290:7: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
+            	            // InternalActionDSL.g:3760:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
             	            {
-            	            otherlv_11=(Token)match(input,49,FOLLOW_49_in_ruleXMemberFeatureCall8163); if (state.failed) return current;
+            	            otherlv_11=(Token)match(input,59,FOLLOW_66); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
-            	                  	newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
-            	                  
+            	              						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
+            	              					
             	            }
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3294:1: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3295:1: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalActionDSL.g:3764:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
+            	            // InternalActionDSL.g:3765:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
             	            {
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3295:1: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3296:3: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
+            	            // InternalActionDSL.g:3765:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalActionDSL.g:3766:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
             	            {
             	            if ( state.backtracking==0 ) {
-            	               
-            	              	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
-            	              	    
+
+            	              								newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0());
+            	              							
             	            }
-            	            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall8184);
+            	            pushFollow(FOLLOW_67);
             	            lv_typeArguments_12_0=ruleJvmArgumentTypeReference();
 
             	            state._fsp--;
             	            if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
-            	              	        if (current==null) {
-            	              	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
-            	              	        }
-            	                     		add(
-            	                     			current, 
-            	                     			"typeArguments",
-            	                      		lv_typeArguments_12_0, 
-            	                      		"JvmArgumentTypeReference");
-            	              	        afterParserOrEnumRuleCall();
-            	              	    
+            	              								if (current==null) {
+            	              									current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+            	              								}
+            	              								add(
+            	              									current,
+            	              									"typeArguments",
+            	              									lv_typeArguments_12_0,
+            	              									"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+            	              								afterParserOrEnumRuleCall();
+            	              							
             	            }
 
             	            }
@@ -9991,24 +10799,18133 @@
 
             	            }
 
-            	            // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3312:2: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
-            	            loop54:
+            	            // InternalActionDSL.g:3783:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
+            	            loop59:
             	            do {
-            	                int alt54=2;
-            	                int LA54_0 = input.LA(1);
+            	                int alt59=2;
+            	                int LA59_0 = input.LA(1);
 
-            	                if ( (LA54_0==38) ) {
-            	                    alt54=1;
+            	                if ( (LA59_0==48) ) {
+            	                    alt59=1;
             	                }
 
 
-            	                switch (alt54) {
+            	                switch (alt59) {
             	            	case 1 :
-            	            	    // ../org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/parser/antlr/internal/InternalActionDSL.g:3312:4: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalActionDSL.g:3784:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
             	            	    {
-            	            	    otherlv_13=(Token)match(input,38,FOLLOW_38_in_ruleXMemberFeatureCall8197); if (state.failed) return current;
+            	            	    otherlv_13=(Token)match(input,48,FOLLOW_66); if (state.failed) return current;
             	            	    if ( state.backtracking==0 ) {
 
-            	            	          	newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
-            	            	          
+            	            	      							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
+            	            	      						
             	            	    }
+            	            	    // InternalActionDSL.g:3788:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalActionDSL.g:3789:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    {
+            	            	    // InternalActionDSL.g:3789:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalActionDSL.g:3790:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
+            	            	    {
+            	            	    if ( state.backtracking==0 ) {
+
+            	            	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0());
+            	            	      								
+            	            	    }
+            	            	    pushFollow(FOLLOW_67);
+            	            	    lv_typeArguments_14_0=ruleJvmArgumentTypeReference();
+
+            	            	    state._fsp--;
+            	            	    if (state.failed) return current;
+            	            	    if ( state.backtracking==0 ) {
+
+            	            	      									if (current==null) {
+            	            	      										current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+            	            	      									}
+            	            	      									add(
+            	            	      										current,
+            	            	      										"typeArguments",
+            	            	      										lv_typeArguments_14_0,
+            	            	      										"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+            	            	      									afterParserOrEnumRuleCall();
+            	            	      								
+            	            	    }
+
+            	            	    }
+
+
+            	            	    }
+
+
+            	            	    }
+            	            	    break;
+
+            	            	default :
+            	            	    break loop59;
+            	                }
+            	            } while (true);
+
+            	            otherlv_15=(Token)match(input,60,FOLLOW_65); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
+            	              					
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // InternalActionDSL.g:3813:5: ( ( ruleIdOrSuper ) )
+            	    // InternalActionDSL.g:3814:6: ( ruleIdOrSuper )
+            	    {
+            	    // InternalActionDSL.g:3814:6: ( ruleIdOrSuper )
+            	    // InternalActionDSL.g:3815:7: ruleIdOrSuper
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							if (current==null) {
+            	      								current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+            	      							}
+            	      						
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_68);
+            	    ruleIdOrSuper();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalActionDSL.g:3829:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?
+            	    int alt63=2;
+            	    alt63 = dfa63.predict(input);
+            	    switch (alt63) {
+            	        case 1 :
+            	            // InternalActionDSL.g:3830:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')'
+            	            {
+            	            // InternalActionDSL.g:3830:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
+            	            // InternalActionDSL.g:3831:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
+            	            {
+            	            // InternalActionDSL.g:3835:7: (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalActionDSL.g:3836:8: lv_explicitOperationCall_17_0= '('
+            	            {
+            	            lv_explicitOperationCall_17_0=(Token)match(input,47,FOLLOW_69); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              								newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
+            	              							
+            	            }
+            	            if ( state.backtracking==0 ) {
+
+            	              								if (current==null) {
+            	              									current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+            	              								}
+            	              								setWithLastConsumed(current, "explicitOperationCall", true, "(");
+            	              							
+            	            }
+
+            	            }
+
+
+            	            }
+
+            	            // InternalActionDSL.g:3848:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
+            	            int alt62=3;
+            	            alt62 = dfa62.predict(input);
+            	            switch (alt62) {
+            	                case 1 :
+            	                    // InternalActionDSL.g:3849:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    {
+            	                    // InternalActionDSL.g:3849:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalActionDSL.g:3850:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    {
+            	                    // InternalActionDSL.g:3875:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalActionDSL.g:3876:9: lv_memberCallArguments_18_0= ruleXShortClosure
+            	                    {
+            	                    if ( state.backtracking==0 ) {
+
+            	                      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0());
+            	                      								
+            	                    }
+            	                    pushFollow(FOLLOW_39);
+            	                    lv_memberCallArguments_18_0=ruleXShortClosure();
+
+            	                    state._fsp--;
+            	                    if (state.failed) return current;
+            	                    if ( state.backtracking==0 ) {
+
+            	                      									if (current==null) {
+            	                      										current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+            	                      									}
+            	                      									add(
+            	                      										current,
+            	                      										"memberCallArguments",
+            	                      										lv_memberCallArguments_18_0,
+            	                      										"org.eclipse.xtext.xbase.Xbase.XShortClosure");
+            	                      									afterParserOrEnumRuleCall();
+            	                      								
+            	                    }
+
+            	                    }
+
+
+            	                    }
+
+
+            	                    }
+            	                    break;
+            	                case 2 :
+            	                    // InternalActionDSL.g:3894:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    {
+            	                    // InternalActionDSL.g:3894:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalActionDSL.g:3895:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    {
+            	                    // InternalActionDSL.g:3895:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
+            	                    // InternalActionDSL.g:3896:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    {
+            	                    // InternalActionDSL.g:3896:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalActionDSL.g:3897:10: lv_memberCallArguments_19_0= ruleXExpression
+            	                    {
+            	                    if ( state.backtracking==0 ) {
+
+            	                      										newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0());
+            	                      									
+            	                    }
+            	                    pushFollow(FOLLOW_38);
+            	                    lv_memberCallArguments_19_0=ruleXExpression();
+
+            	                    state._fsp--;
+            	                    if (state.failed) return current;
+            	                    if ( state.backtracking==0 ) {
+
+            	                      										if (current==null) {
+            	                      											current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+            	                      										}
+            	                      										add(
+            	                      											current,
+            	                      											"memberCallArguments",
+            	                      											lv_memberCallArguments_19_0,
+            	                      											"org.eclipse.xtext.xbase.Xbase.XExpression");
+            	                      										afterParserOrEnumRuleCall();
+            	                      									
+            	                    }
+
+            	                    }
+
+
+            	                    }
+
+            	                    // InternalActionDSL.g:3914:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    loop61:
+            	                    do {
+            	                        int alt61=2;
+            	                        int LA61_0 = input.LA(1);
+
+            	                        if ( (LA61_0==48) ) {
+            	                            alt61=1;
+            	                        }
+
+
+            	                        switch (alt61) {
+            	                    	case 1 :
+            	                    	    // InternalActionDSL.g:3915:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    {
+            	                    	    otherlv_20=(Token)match(input,48,FOLLOW_41); if (state.failed) return current;
+            	                    	    if ( state.backtracking==0 ) {
+
+            	                    	      									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
+            	                    	      								
+            	                    	    }
+            	                    	    // InternalActionDSL.g:3919:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalActionDSL.g:3920:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    {
+            	                    	    // InternalActionDSL.g:3920:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalActionDSL.g:3921:11: lv_memberCallArguments_21_0= ruleXExpression
+            	                    	    {
+            	                    	    if ( state.backtracking==0 ) {
+
+            	                    	      											newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0());
+            	                    	      										
+            	                    	    }
+            	                    	    pushFollow(FOLLOW_38);
+            	                    	    lv_memberCallArguments_21_0=ruleXExpression();
+
+            	                    	    state._fsp--;
+            	                    	    if (state.failed) return current;
+            	                    	    if ( state.backtracking==0 ) {
+
+            	                    	      											if (current==null) {
+            	                    	      												current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+            	                    	      											}
+            	                    	      											add(
+            	                    	      												current,
+            	                    	      												"memberCallArguments",
+            	                    	      												lv_memberCallArguments_21_0,
+            	                    	      												"org.eclipse.xtext.xbase.Xbase.XExpression");
+            	                    	      											afterParserOrEnumRuleCall();
+            	                    	      										
+            	                    	    }
+
+            	                    	    }
+
+
+            	                    	    }
+
+
+            	                    	    }
+            	                    	    break;
+
+            	                    	default :
+            	                    	    break loop61;
+            	                        }
+            	                    } while (true);
+
+
+            	                    }
+
+
+            	                    }
+            	                    break;
+
+            	            }
+
+            	            otherlv_22=(Token)match(input,49,FOLLOW_70); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
+            	              					
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // InternalActionDSL.g:3946:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    int alt64=2;
+            	    alt64 = dfa64.predict(input);
+            	    switch (alt64) {
+            	        case 1 :
+            	            // InternalActionDSL.g:3947:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
+            	            {
+            	            // InternalActionDSL.g:3953:6: (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalActionDSL.g:3954:7: lv_memberCallArguments_23_0= ruleXClosure
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	              							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0());
+            	              						
+            	            }
+            	            pushFollow(FOLLOW_63);
+            	            lv_memberCallArguments_23_0=ruleXClosure();
+
+            	            state._fsp--;
+            	            if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              							if (current==null) {
+            	              								current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+            	              							}
+            	              							add(
+            	              								current,
+            	              								"memberCallArguments",
+            	              								lv_memberCallArguments_23_0,
+            	              								"org.eclipse.xtext.xbase.Xbase.XClosure");
+            	              							afterParserOrEnumRuleCall();
+            	              						
+            	            }
+
+            	            }
+
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop65;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXMemberFeatureCall"
+
+
+    // $ANTLR start "entryRuleXPrimaryExpression"
+    // InternalActionDSL.g:3977:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
+    public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXPrimaryExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:3977:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
+            // InternalActionDSL.g:3978:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXPrimaryExpression=ruleXPrimaryExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXPrimaryExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXPrimaryExpression"
+
+
+    // $ANTLR start "ruleXPrimaryExpression"
+    // InternalActionDSL.g:3984:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) ;
+    public final EObject ruleXPrimaryExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XConstructorCall_0 = null;
+
+        EObject this_XBlockExpression_1 = null;
+
+        EObject this_XSwitchExpression_2 = null;
+
+        EObject this_XSynchronizedExpression_3 = null;
+
+        EObject this_XFeatureCall_4 = null;
+
+        EObject this_XLiteral_5 = null;
+
+        EObject this_XIfExpression_6 = null;
+
+        EObject this_XForLoopExpression_7 = null;
+
+        EObject this_XBasicForLoopExpression_8 = null;
+
+        EObject this_XWhileExpression_9 = null;
+
+        EObject this_XDoWhileExpression_10 = null;
+
+        EObject this_XThrowExpression_11 = null;
+
+        EObject this_XReturnExpression_12 = null;
+
+        EObject this_XTryCatchFinallyExpression_13 = null;
+
+        EObject this_XParenthesizedExpression_14 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:3990:2: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) )
+            // InternalActionDSL.g:3991:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
+            {
+            // InternalActionDSL.g:3991:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
+            int alt66=15;
+            alt66 = dfa66.predict(input);
+            switch (alt66) {
+                case 1 :
+                    // InternalActionDSL.g:3992:3: this_XConstructorCall_0= ruleXConstructorCall
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XConstructorCall_0=ruleXConstructorCall();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XConstructorCall_0;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:4001:3: this_XBlockExpression_1= ruleXBlockExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XBlockExpression_1=ruleXBlockExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XBlockExpression_1;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:4010:3: this_XSwitchExpression_2= ruleXSwitchExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XSwitchExpression_2=ruleXSwitchExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XSwitchExpression_2;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:4019:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    {
+                    // InternalActionDSL.g:4019:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalActionDSL.g:4020:4: ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3());
+                      			
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XSynchronizedExpression_3=ruleXSynchronizedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_XSynchronizedExpression_3;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:4037:3: this_XFeatureCall_4= ruleXFeatureCall
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XFeatureCall_4=ruleXFeatureCall();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XFeatureCall_4;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // InternalActionDSL.g:4046:3: this_XLiteral_5= ruleXLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XLiteral_5=ruleXLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XLiteral_5;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // InternalActionDSL.g:4055:3: this_XIfExpression_6= ruleXIfExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XIfExpression_6=ruleXIfExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XIfExpression_6;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 8 :
+                    // InternalActionDSL.g:4064:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    {
+                    // InternalActionDSL.g:4064:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalActionDSL.g:4065:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7());
+                      			
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XForLoopExpression_7=ruleXForLoopExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_XForLoopExpression_7;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalActionDSL.g:4088:3: this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XBasicForLoopExpression_8=ruleXBasicForLoopExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XBasicForLoopExpression_8;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 10 :
+                    // InternalActionDSL.g:4097:3: this_XWhileExpression_9= ruleXWhileExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XWhileExpression_9=ruleXWhileExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XWhileExpression_9;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 11 :
+                    // InternalActionDSL.g:4106:3: this_XDoWhileExpression_10= ruleXDoWhileExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XDoWhileExpression_10=ruleXDoWhileExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XDoWhileExpression_10;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 12 :
+                    // InternalActionDSL.g:4115:3: this_XThrowExpression_11= ruleXThrowExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XThrowExpression_11=ruleXThrowExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XThrowExpression_11;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 13 :
+                    // InternalActionDSL.g:4124:3: this_XReturnExpression_12= ruleXReturnExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XReturnExpression_12=ruleXReturnExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XReturnExpression_12;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 14 :
+                    // InternalActionDSL.g:4133:3: this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XTryCatchFinallyExpression_13=ruleXTryCatchFinallyExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XTryCatchFinallyExpression_13;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 15 :
+                    // InternalActionDSL.g:4142:3: this_XParenthesizedExpression_14= ruleXParenthesizedExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XParenthesizedExpression_14=ruleXParenthesizedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XParenthesizedExpression_14;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXPrimaryExpression"
+
+
+    // $ANTLR start "entryRuleXLiteral"
+    // InternalActionDSL.g:4154:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
+    public final EObject entryRuleXLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXLiteral = null;
+
+
+        try {
+            // InternalActionDSL.g:4154:49: (iv_ruleXLiteral= ruleXLiteral EOF )
+            // InternalActionDSL.g:4155:2: iv_ruleXLiteral= ruleXLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXLiteral=ruleXLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXLiteral; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXLiteral"
+
+
+    // $ANTLR start "ruleXLiteral"
+    // InternalActionDSL.g:4161:1: ruleXLiteral returns [EObject current=null] : (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) ;
+    public final EObject ruleXLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XCollectionLiteral_0 = null;
+
+        EObject this_XClosure_1 = null;
+
+        EObject this_XBooleanLiteral_2 = null;
+
+        EObject this_XNumberLiteral_3 = null;
+
+        EObject this_XNullLiteral_4 = null;
+
+        EObject this_XStringLiteral_5 = null;
+
+        EObject this_XTypeLiteral_6 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4167:2: ( (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) )
+            // InternalActionDSL.g:4168:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
+            {
+            // InternalActionDSL.g:4168:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
+            int alt67=7;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==51) ) {
+                alt67=1;
+            }
+            else if ( (LA67_0==52) && (synpred27_InternalActionDSL())) {
+                alt67=2;
+            }
+            else if ( ((LA67_0>=102 && LA67_0<=103)) ) {
+                alt67=3;
+            }
+            else if ( ((LA67_0>=RULE_HEX && LA67_0<=RULE_DECIMAL)) ) {
+                alt67=4;
+            }
+            else if ( (LA67_0==104) ) {
+                alt67=5;
+            }
+            else if ( (LA67_0==RULE_STRING) ) {
+                alt67=6;
+            }
+            else if ( (LA67_0==105) ) {
+                alt67=7;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 67, 0, input);
+
+                throw nvae;
+            }
+            switch (alt67) {
+                case 1 :
+                    // InternalActionDSL.g:4169:3: this_XCollectionLiteral_0= ruleXCollectionLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XCollectionLiteral_0=ruleXCollectionLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XCollectionLiteral_0;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:4178:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    {
+                    // InternalActionDSL.g:4178:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalActionDSL.g:4179:4: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1());
+                      			
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XClosure_1=ruleXClosure();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_XClosure_1;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:4195:3: this_XBooleanLiteral_2= ruleXBooleanLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XBooleanLiteral_2=ruleXBooleanLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XBooleanLiteral_2;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:4204:3: this_XNumberLiteral_3= ruleXNumberLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XNumberLiteral_3=ruleXNumberLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XNumberLiteral_3;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:4213:3: this_XNullLiteral_4= ruleXNullLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XNullLiteral_4=ruleXNullLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XNullLiteral_4;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // InternalActionDSL.g:4222:3: this_XStringLiteral_5= ruleXStringLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XStringLiteral_5=ruleXStringLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XStringLiteral_5;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // InternalActionDSL.g:4231:3: this_XTypeLiteral_6= ruleXTypeLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XTypeLiteral_6=ruleXTypeLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XTypeLiteral_6;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXLiteral"
+
+
+    // $ANTLR start "entryRuleXCollectionLiteral"
+    // InternalActionDSL.g:4243:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
+    public final EObject entryRuleXCollectionLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCollectionLiteral = null;
+
+
+        try {
+            // InternalActionDSL.g:4243:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
+            // InternalActionDSL.g:4244:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXCollectionLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXCollectionLiteral=ruleXCollectionLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXCollectionLiteral; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXCollectionLiteral"
+
+
+    // $ANTLR start "ruleXCollectionLiteral"
+    // InternalActionDSL.g:4250:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
+    public final EObject ruleXCollectionLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XSetLiteral_0 = null;
+
+        EObject this_XListLiteral_1 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4256:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
+            // InternalActionDSL.g:4257:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            {
+            // InternalActionDSL.g:4257:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            int alt68=2;
+            int LA68_0 = input.LA(1);
+
+            if ( (LA68_0==51) ) {
+                int LA68_1 = input.LA(2);
+
+                if ( (LA68_1==52) ) {
+                    alt68=2;
+                }
+                else if ( (LA68_1==14) ) {
+                    alt68=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 68, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 68, 0, input);
+
+                throw nvae;
+            }
+            switch (alt68) {
+                case 1 :
+                    // InternalActionDSL.g:4258:3: this_XSetLiteral_0= ruleXSetLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XSetLiteral_0=ruleXSetLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XSetLiteral_0;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:4267:3: this_XListLiteral_1= ruleXListLiteral
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XListLiteral_1=ruleXListLiteral();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XListLiteral_1;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXCollectionLiteral"
+
+
+    // $ANTLR start "entryRuleXSetLiteral"
+    // InternalActionDSL.g:4279:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
+    public final EObject entryRuleXSetLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSetLiteral = null;
+
+
+        try {
+            // InternalActionDSL.g:4279:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
+            // InternalActionDSL.g:4280:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXSetLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXSetLiteral=ruleXSetLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXSetLiteral; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXSetLiteral"
+
+
+    // $ANTLR start "ruleXSetLiteral"
+    // InternalActionDSL.g:4286:1: ruleXSetLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) ;
+    public final EObject ruleXSetLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_elements_3_0 = null;
+
+        EObject lv_elements_5_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4292:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
+            // InternalActionDSL.g:4293:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            {
+            // InternalActionDSL.g:4293:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalActionDSL.g:4294:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
+            {
+            // InternalActionDSL.g:4294:3: ()
+            // InternalActionDSL.g:4295:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,51,FOLLOW_12); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,14,FOLLOW_71); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
+              		
+            }
+            // InternalActionDSL.g:4309:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt70=2;
+            int LA70_0 = input.LA(1);
+
+            if ( ((LA70_0>=RULE_ID && LA70_0<=RULE_DECIMAL)||LA70_0==14||(LA70_0>=40 && LA70_0<=42)||LA70_0==47||(LA70_0>=51 && LA70_0<=52)||LA70_0==59||(LA70_0>=75 && LA70_0<=76)||LA70_0==80||LA70_0==88||LA70_0==90||(LA70_0>=94 && LA70_0<=96)||(LA70_0>=99 && LA70_0<=108)||LA70_0==110) ) {
+                alt70=1;
+            }
+            switch (alt70) {
+                case 1 :
+                    // InternalActionDSL.g:4310:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    {
+                    // InternalActionDSL.g:4310:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalActionDSL.g:4311:5: (lv_elements_3_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:4311:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalActionDSL.g:4312:6: lv_elements_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_72);
+                    lv_elements_3_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+                      						}
+                      						add(
+                      							current,
+                      							"elements",
+                      							lv_elements_3_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:4329:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop69:
+                    do {
+                        int alt69=2;
+                        int LA69_0 = input.LA(1);
+
+                        if ( (LA69_0==48) ) {
+                            alt69=1;
+                        }
+
+
+                        switch (alt69) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:4330:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,48,FOLLOW_41); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalActionDSL.g:4334:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalActionDSL.g:4335:6: (lv_elements_5_0= ruleXExpression )
+                    	    {
+                    	    // InternalActionDSL.g:4335:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalActionDSL.g:4336:7: lv_elements_5_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_72);
+                    	    lv_elements_5_0=ruleXExpression();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"elements",
+                    	      								lv_elements_5_0,
+                    	      								"org.eclipse.xtext.xbase.Xbase.XExpression");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop69;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXSetLiteral"
+
+
+    // $ANTLR start "entryRuleXListLiteral"
+    // InternalActionDSL.g:4363:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
+    public final EObject entryRuleXListLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXListLiteral = null;
+
+
+        try {
+            // InternalActionDSL.g:4363:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
+            // InternalActionDSL.g:4364:2: iv_ruleXListLiteral= ruleXListLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXListLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXListLiteral=ruleXListLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXListLiteral; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXListLiteral"
+
+
+    // $ANTLR start "ruleXListLiteral"
+    // InternalActionDSL.g:4370:1: ruleXListLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) ;
+    public final EObject ruleXListLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_elements_3_0 = null;
+
+        EObject lv_elements_5_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4376:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
+            // InternalActionDSL.g:4377:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            {
+            // InternalActionDSL.g:4377:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalActionDSL.g:4378:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
+            {
+            // InternalActionDSL.g:4378:3: ()
+            // InternalActionDSL.g:4379:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,51,FOLLOW_42); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,52,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
+              		
+            }
+            // InternalActionDSL.g:4393:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt72=2;
+            int LA72_0 = input.LA(1);
+
+            if ( ((LA72_0>=RULE_ID && LA72_0<=RULE_DECIMAL)||LA72_0==14||(LA72_0>=40 && LA72_0<=42)||LA72_0==47||(LA72_0>=51 && LA72_0<=52)||LA72_0==59||(LA72_0>=75 && LA72_0<=76)||LA72_0==80||LA72_0==88||LA72_0==90||(LA72_0>=94 && LA72_0<=96)||(LA72_0>=99 && LA72_0<=108)||LA72_0==110) ) {
+                alt72=1;
+            }
+            switch (alt72) {
+                case 1 :
+                    // InternalActionDSL.g:4394:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    {
+                    // InternalActionDSL.g:4394:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalActionDSL.g:4395:5: (lv_elements_3_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:4395:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalActionDSL.g:4396:6: lv_elements_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_44);
+                    lv_elements_3_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+                      						}
+                      						add(
+                      							current,
+                      							"elements",
+                      							lv_elements_3_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:4413:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop71:
+                    do {
+                        int alt71=2;
+                        int LA71_0 = input.LA(1);
+
+                        if ( (LA71_0==48) ) {
+                            alt71=1;
+                        }
+
+
+                        switch (alt71) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:4414:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,48,FOLLOW_41); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalActionDSL.g:4418:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalActionDSL.g:4419:6: (lv_elements_5_0= ruleXExpression )
+                    	    {
+                    	    // InternalActionDSL.g:4419:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalActionDSL.g:4420:7: lv_elements_5_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_44);
+                    	    lv_elements_5_0=ruleXExpression();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"elements",
+                    	      								lv_elements_5_0,
+                    	      								"org.eclipse.xtext.xbase.Xbase.XExpression");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop71;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXListLiteral"
+
+
+    // $ANTLR start "entryRuleXClosure"
+    // InternalActionDSL.g:4447:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
+    public final EObject entryRuleXClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXClosure = null;
+
+
+        try {
+            // InternalActionDSL.g:4447:49: (iv_ruleXClosure= ruleXClosure EOF )
+            // InternalActionDSL.g:4448:2: iv_ruleXClosure= ruleXClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXClosureRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXClosure=ruleXClosure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXClosure; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXClosure"
+
+
+    // $ANTLR start "ruleXClosure"
+    // InternalActionDSL.g:4454:1: ruleXClosure returns [EObject current=null] : ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) ;
+    public final EObject ruleXClosure() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token lv_explicitSyntax_5_0=null;
+        Token otherlv_7=null;
+        EObject lv_declaredFormalParameters_2_0 = null;
+
+        EObject lv_declaredFormalParameters_4_0 = null;
+
+        EObject lv_expression_6_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4460:2: ( ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) )
+            // InternalActionDSL.g:4461:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
+            {
+            // InternalActionDSL.g:4461:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
+            // InternalActionDSL.g:4462:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']'
+            {
+            // InternalActionDSL.g:4462:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
+            // InternalActionDSL.g:4463:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
+            {
+            // InternalActionDSL.g:4469:4: ( () otherlv_1= '[' )
+            // InternalActionDSL.g:4470:5: () otherlv_1= '['
+            {
+            // InternalActionDSL.g:4470:5: ()
+            // InternalActionDSL.g:4471:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,52,FOLLOW_73); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:4483:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
+            int alt75=2;
+            alt75 = dfa75.predict(input);
+            switch (alt75) {
+                case 1 :
+                    // InternalActionDSL.g:4484:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    {
+                    // InternalActionDSL.g:4507:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalActionDSL.g:4508:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
+                    {
+                    // InternalActionDSL.g:4508:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
+                    int alt74=2;
+                    int LA74_0 = input.LA(1);
+
+                    if ( (LA74_0==RULE_ID||LA74_0==47||LA74_0==72) ) {
+                        alt74=1;
+                    }
+                    switch (alt74) {
+                        case 1 :
+                            // InternalActionDSL.g:4509:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            {
+                            // InternalActionDSL.g:4509:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
+                            // InternalActionDSL.g:4510:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            {
+                            // InternalActionDSL.g:4510:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalActionDSL.g:4511:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_74);
+                            lv_declaredFormalParameters_2_0=ruleJvmFormalParameter();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElementForParent(grammarAccess.getXClosureRule());
+                              								}
+                              								add(
+                              									current,
+                              									"declaredFormalParameters",
+                              									lv_declaredFormalParameters_2_0,
+                              									"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+                              								afterParserOrEnumRuleCall();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalActionDSL.g:4528:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            loop73:
+                            do {
+                                int alt73=2;
+                                int LA73_0 = input.LA(1);
+
+                                if ( (LA73_0==48) ) {
+                                    alt73=1;
+                                }
+
+
+                                switch (alt73) {
+                            	case 1 :
+                            	    // InternalActionDSL.g:4529:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    {
+                            	    otherlv_3=(Token)match(input,48,FOLLOW_54); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
+                            	      						
+                            	    }
+                            	    // InternalActionDSL.g:4533:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalActionDSL.g:4534:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    {
+                            	    // InternalActionDSL.g:4534:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalActionDSL.g:4535:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_74);
+                            	    lv_declaredFormalParameters_4_0=ruleJvmFormalParameter();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									if (current==null) {
+                            	      										current = createModelElementForParent(grammarAccess.getXClosureRule());
+                            	      									}
+                            	      									add(
+                            	      										current,
+                            	      										"declaredFormalParameters",
+                            	      										lv_declaredFormalParameters_4_0,
+                            	      										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+                            	      									afterParserOrEnumRuleCall();
+                            	      								
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop73;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalActionDSL.g:4554:5: ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalActionDSL.g:4555:6: (lv_explicitSyntax_5_0= '|' )
+                    {
+                    // InternalActionDSL.g:4555:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalActionDSL.g:4556:7: lv_explicitSyntax_5_0= '|'
+                    {
+                    lv_explicitSyntax_5_0=(Token)match(input,87,FOLLOW_75); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getXClosureRule());
+                      							}
+                      							setWithLastConsumed(current, "explicitSyntax", true, "|");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:4570:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
+            // InternalActionDSL.g:4571:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            {
+            // InternalActionDSL.g:4571:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalActionDSL.g:4572:5: lv_expression_6_0= ruleXExpressionInClosure
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_76);
+            lv_expression_6_0=ruleXExpressionInClosure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXClosureRule());
+              					}
+              					set(
+              						current,
+              						"expression",
+              						lv_expression_6_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpressionInClosure");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXClosure"
+
+
+    // $ANTLR start "entryRuleXExpressionInClosure"
+    // InternalActionDSL.g:4597:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
+    public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpressionInClosure = null;
+
+
+        try {
+            // InternalActionDSL.g:4597:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
+            // InternalActionDSL.g:4598:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXExpressionInClosureRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXExpressionInClosure=ruleXExpressionInClosure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXExpressionInClosure; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXExpressionInClosure"
+
+
+    // $ANTLR start "ruleXExpressionInClosure"
+    // InternalActionDSL.g:4604:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) ;
+    public final EObject ruleXExpressionInClosure() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject lv_expressions_1_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4610:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
+            // InternalActionDSL.g:4611:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            {
+            // InternalActionDSL.g:4611:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalActionDSL.g:4612:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            {
+            // InternalActionDSL.g:4612:3: ()
+            // InternalActionDSL.g:4613:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalActionDSL.g:4619:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            loop77:
+            do {
+                int alt77=2;
+                int LA77_0 = input.LA(1);
+
+                if ( ((LA77_0>=RULE_ID && LA77_0<=RULE_DECIMAL)||LA77_0==14||(LA77_0>=40 && LA77_0<=42)||LA77_0==47||(LA77_0>=51 && LA77_0<=52)||LA77_0==59||(LA77_0>=75 && LA77_0<=76)||LA77_0==80||LA77_0==88||LA77_0==90||(LA77_0>=94 && LA77_0<=108)||LA77_0==110) ) {
+                    alt77=1;
+                }
+
+
+                switch (alt77) {
+            	case 1 :
+            	    // InternalActionDSL.g:4620:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
+            	    {
+            	    // InternalActionDSL.g:4620:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalActionDSL.g:4621:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    {
+            	    // InternalActionDSL.g:4621:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalActionDSL.g:4622:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_77);
+            	    lv_expressions_1_0=ruleXExpressionOrVarDeclaration();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
+            	      						}
+            	      						add(
+            	      							current,
+            	      							"expressions",
+            	      							lv_expressions_1_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalActionDSL.g:4639:4: (otherlv_2= ';' )?
+            	    int alt76=2;
+            	    int LA76_0 = input.LA(1);
+
+            	    if ( (LA76_0==45) ) {
+            	        alt76=1;
+            	    }
+            	    switch (alt76) {
+            	        case 1 :
+            	            // InternalActionDSL.g:4640:5: otherlv_2= ';'
+            	            {
+            	            otherlv_2=(Token)match(input,45,FOLLOW_78); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+            	              				
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop77;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXExpressionInClosure"
+
+
+    // $ANTLR start "entryRuleXShortClosure"
+    // InternalActionDSL.g:4650:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
+    public final EObject entryRuleXShortClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXShortClosure = null;
+
+
+        try {
+            // InternalActionDSL.g:4650:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
+            // InternalActionDSL.g:4651:2: iv_ruleXShortClosure= ruleXShortClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXShortClosureRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXShortClosure=ruleXShortClosure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXShortClosure; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXShortClosure"
+
+
+    // $ANTLR start "ruleXShortClosure"
+    // InternalActionDSL.g:4657:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
+    public final EObject ruleXShortClosure() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token lv_explicitSyntax_4_0=null;
+        EObject lv_declaredFormalParameters_1_0 = null;
+
+        EObject lv_declaredFormalParameters_3_0 = null;
+
+        EObject lv_expression_5_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4663:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalActionDSL.g:4664:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            {
+            // InternalActionDSL.g:4664:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalActionDSL.g:4665:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
+            {
+            // InternalActionDSL.g:4665:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
+            // InternalActionDSL.g:4666:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            {
+            // InternalActionDSL.g:4691:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalActionDSL.g:4692:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
+            {
+            // InternalActionDSL.g:4692:5: ()
+            // InternalActionDSL.g:4693:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            // InternalActionDSL.g:4699:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
+
+            if ( (LA79_0==RULE_ID||LA79_0==47||LA79_0==72) ) {
+                alt79=1;
+            }
+            switch (alt79) {
+                case 1 :
+                    // InternalActionDSL.g:4700:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    {
+                    // InternalActionDSL.g:4700:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
+                    // InternalActionDSL.g:4701:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    {
+                    // InternalActionDSL.g:4701:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalActionDSL.g:4702:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      								newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0());
+                      							
+                    }
+                    pushFollow(FOLLOW_74);
+                    lv_declaredFormalParameters_1_0=ruleJvmFormalParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      								if (current==null) {
+                      									current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+                      								}
+                      								add(
+                      									current,
+                      									"declaredFormalParameters",
+                      									lv_declaredFormalParameters_1_0,
+                      									"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+                      								afterParserOrEnumRuleCall();
+                      							
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:4719:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    loop78:
+                    do {
+                        int alt78=2;
+                        int LA78_0 = input.LA(1);
+
+                        if ( (LA78_0==48) ) {
+                            alt78=1;
+                        }
+
+
+                        switch (alt78) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:4720:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    {
+                    	    otherlv_2=(Token)match(input,48,FOLLOW_54); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
+                    	      						
+                    	    }
+                    	    // InternalActionDSL.g:4724:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalActionDSL.g:4725:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    {
+                    	    // InternalActionDSL.g:4725:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalActionDSL.g:4726:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      									newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0());
+                    	      								
+                    	    }
+                    	    pushFollow(FOLLOW_74);
+                    	    lv_declaredFormalParameters_3_0=ruleJvmFormalParameter();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      									if (current==null) {
+                    	      										current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+                    	      									}
+                    	      									add(
+                    	      										current,
+                    	      										"declaredFormalParameters",
+                    	      										lv_declaredFormalParameters_3_0,
+                    	      										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+                    	      									afterParserOrEnumRuleCall();
+                    	      								
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop78;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:4745:5: ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalActionDSL.g:4746:6: (lv_explicitSyntax_4_0= '|' )
+            {
+            // InternalActionDSL.g:4746:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalActionDSL.g:4747:7: lv_explicitSyntax_4_0= '|'
+            {
+            lv_explicitSyntax_4_0=(Token)match(input,87,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              							newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
+              						
+            }
+            if ( state.backtracking==0 ) {
+
+              							if (current==null) {
+              								current = createModelElement(grammarAccess.getXShortClosureRule());
+              							}
+              							setWithLastConsumed(current, "explicitSyntax", true, "|");
+              						
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:4761:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalActionDSL.g:4762:4: (lv_expression_5_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:4762:4: (lv_expression_5_0= ruleXExpression )
+            // InternalActionDSL.g:4763:5: lv_expression_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_expression_5_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+              					}
+              					set(
+              						current,
+              						"expression",
+              						lv_expression_5_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXShortClosure"
+
+
+    // $ANTLR start "entryRuleXParenthesizedExpression"
+    // InternalActionDSL.g:4784:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
+    public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXParenthesizedExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:4784:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
+            // InternalActionDSL.g:4785:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXParenthesizedExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXParenthesizedExpression"
+
+
+    // $ANTLR start "ruleXParenthesizedExpression"
+    // InternalActionDSL.g:4791:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
+    public final EObject ruleXParenthesizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        EObject this_XExpression_1 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4797:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
+            // InternalActionDSL.g:4798:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            {
+            // InternalActionDSL.g:4798:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalActionDSL.g:4799:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
+            {
+            otherlv_0=(Token)match(input,47,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1());
+              		
+            }
+            pushFollow(FOLLOW_39);
+            this_XExpression_1=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XExpression_1;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            otherlv_2=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXParenthesizedExpression"
+
+
+    // $ANTLR start "entryRuleXIfExpression"
+    // InternalActionDSL.g:4819:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
+    public final EObject entryRuleXIfExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXIfExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:4819:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
+            // InternalActionDSL.g:4820:2: iv_ruleXIfExpression= ruleXIfExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXIfExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXIfExpression=ruleXIfExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXIfExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXIfExpression"
+
+
+    // $ANTLR start "ruleXIfExpression"
+    // InternalActionDSL.g:4826:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
+    public final EObject ruleXIfExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_if_3_0 = null;
+
+        EObject lv_then_5_0 = null;
+
+        EObject lv_else_7_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4832:2: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
+            // InternalActionDSL.g:4833:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
+            {
+            // InternalActionDSL.g:4833:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
+            // InternalActionDSL.g:4834:3: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            {
+            // InternalActionDSL.g:4834:3: ()
+            // InternalActionDSL.g:4835:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,88,FOLLOW_79); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,47,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalActionDSL.g:4849:3: ( (lv_if_3_0= ruleXExpression ) )
+            // InternalActionDSL.g:4850:4: (lv_if_3_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:4850:4: (lv_if_3_0= ruleXExpression )
+            // InternalActionDSL.g:4851:5: lv_if_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_39);
+            lv_if_3_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+              					}
+              					set(
+              						current,
+              						"if",
+              						lv_if_3_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,49,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
+              		
+            }
+            // InternalActionDSL.g:4872:3: ( (lv_then_5_0= ruleXExpression ) )
+            // InternalActionDSL.g:4873:4: (lv_then_5_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:4873:4: (lv_then_5_0= ruleXExpression )
+            // InternalActionDSL.g:4874:5: lv_then_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_80);
+            lv_then_5_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+              					}
+              					set(
+              						current,
+              						"then",
+              						lv_then_5_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:4891:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
+
+            if ( (LA80_0==89) ) {
+                int LA80_1 = input.LA(2);
+
+                if ( (synpred31_InternalActionDSL()) ) {
+                    alt80=1;
+                }
+            }
+            switch (alt80) {
+                case 1 :
+                    // InternalActionDSL.g:4892:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
+                    {
+                    // InternalActionDSL.g:4892:4: ( ( 'else' )=>otherlv_6= 'else' )
+                    // InternalActionDSL.g:4893:5: ( 'else' )=>otherlv_6= 'else'
+                    {
+                    otherlv_6=(Token)match(input,89,FOLLOW_41); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalActionDSL.g:4899:4: ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalActionDSL.g:4900:5: (lv_else_7_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:4900:5: (lv_else_7_0= ruleXExpression )
+                    // InternalActionDSL.g:4901:6: lv_else_7_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_else_7_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+                      						}
+                      						set(
+                      							current,
+                      							"else",
+                      							lv_else_7_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXIfExpression"
+
+
+    // $ANTLR start "entryRuleXSwitchExpression"
+    // InternalActionDSL.g:4923:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
+    public final EObject entryRuleXSwitchExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSwitchExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:4923:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
+            // InternalActionDSL.g:4924:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXSwitchExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXSwitchExpression=ruleXSwitchExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXSwitchExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXSwitchExpression"
+
+
+    // $ANTLR start "ruleXSwitchExpression"
+    // InternalActionDSL.g:4930:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) ;
+    public final EObject ruleXSwitchExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        EObject lv_declaredParam_3_0 = null;
+
+        EObject lv_switch_5_0 = null;
+
+        EObject lv_declaredParam_7_0 = null;
+
+        EObject lv_switch_9_0 = null;
+
+        EObject lv_cases_11_0 = null;
+
+        EObject lv_default_14_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:4936:2: ( ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) )
+            // InternalActionDSL.g:4937:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
+            {
+            // InternalActionDSL.g:4937:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
+            // InternalActionDSL.g:4938:3: () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}'
+            {
+            // InternalActionDSL.g:4938:3: ()
+            // InternalActionDSL.g:4939:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,90,FOLLOW_81); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:4949:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )
+            int alt82=2;
+            alt82 = dfa82.predict(input);
+            switch (alt82) {
+                case 1 :
+                    // InternalActionDSL.g:4950:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    {
+                    // InternalActionDSL.g:4950:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalActionDSL.g:4951:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
+                    {
+                    // InternalActionDSL.g:4951:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+                    // InternalActionDSL.g:4952:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    {
+                    // InternalActionDSL.g:4962:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalActionDSL.g:4963:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+                    {
+                    otherlv_2=(Token)match(input,47,FOLLOW_54); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
+                      						
+                    }
+                    // InternalActionDSL.g:4967:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+                    // InternalActionDSL.g:4968:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    {
+                    // InternalActionDSL.g:4968:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalActionDSL.g:4969:9: lv_declaredParam_3_0= ruleJvmFormalParameter
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0());
+                      								
+                    }
+                    pushFollow(FOLLOW_82);
+                    lv_declaredParam_3_0=ruleJvmFormalParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      									if (current==null) {
+                      										current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+                      									}
+                      									set(
+                      										current,
+                      										"declaredParam",
+                      										lv_declaredParam_3_0,
+                      										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+                      									afterParserOrEnumRuleCall();
+                      								
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_4=(Token)match(input,91,FOLLOW_41); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:4992:5: ( (lv_switch_5_0= ruleXExpression ) )
+                    // InternalActionDSL.g:4993:6: (lv_switch_5_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:4993:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalActionDSL.g:4994:7: lv_switch_5_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_39);
+                    lv_switch_5_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+                      							}
+                      							set(
+                      								current,
+                      								"switch",
+                      								lv_switch_5_0,
+                      								"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_6=(Token)match(input,49,FOLLOW_12); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:5017:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    {
+                    // InternalActionDSL.g:5017:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalActionDSL.g:5018:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
+                    {
+                    // InternalActionDSL.g:5018:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
+                    int alt81=2;
+                    alt81 = dfa81.predict(input);
+                    switch (alt81) {
+                        case 1 :
+                            // InternalActionDSL.g:5019:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            {
+                            // InternalActionDSL.g:5028:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalActionDSL.g:5029:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
+                            {
+                            // InternalActionDSL.g:5029:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
+                            // InternalActionDSL.g:5030:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            {
+                            // InternalActionDSL.g:5030:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalActionDSL.g:5031:9: lv_declaredParam_7_0= ruleJvmFormalParameter
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0());
+                              								
+                            }
+                            pushFollow(FOLLOW_82);
+                            lv_declaredParam_7_0=ruleJvmFormalParameter();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              									if (current==null) {
+                              										current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+                              									}
+                              									set(
+                              										current,
+                              										"declaredParam",
+                              										lv_declaredParam_7_0,
+                              										"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+                              									afterParserOrEnumRuleCall();
+                              								
+                            }
+
+                            }
+
+
+                            }
+
+                            otherlv_8=(Token)match(input,91,FOLLOW_41); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
+                              						
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalActionDSL.g:5054:5: ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalActionDSL.g:5055:6: (lv_switch_9_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:5055:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalActionDSL.g:5056:7: lv_switch_9_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_12);
+                    lv_switch_9_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+                      							}
+                      							set(
+                      								current,
+                      								"switch",
+                      								lv_switch_9_0,
+                      								"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_10=(Token)match(input,14,FOLLOW_83); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
+              		
+            }
+            // InternalActionDSL.g:5079:3: ( (lv_cases_11_0= ruleXCasePart ) )*
+            loop83:
+            do {
+                int alt83=2;
+                int LA83_0 = input.LA(1);
+
+                if ( (LA83_0==RULE_ID||(LA83_0>=47 && LA83_0<=48)||LA83_0==72||LA83_0==91||LA83_0==93) ) {
+                    alt83=1;
+                }
+
+
+                switch (alt83) {
+            	case 1 :
+            	    // InternalActionDSL.g:5080:4: (lv_cases_11_0= ruleXCasePart )
+            	    {
+            	    // InternalActionDSL.g:5080:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalActionDSL.g:5081:5: lv_cases_11_0= ruleXCasePart
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_83);
+            	    lv_cases_11_0=ruleXCasePart();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"cases",
+            	      						lv_cases_11_0,
+            	      						"org.eclipse.xtext.xbase.Xbase.XCasePart");
+            	      					afterParserOrEnumRuleCall();
+            	      				
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop83;
+                }
+            } while (true);
+
+            // InternalActionDSL.g:5098:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
+            int alt84=2;
+            int LA84_0 = input.LA(1);
+
+            if ( (LA84_0==92) ) {
+                alt84=1;
+            }
+            switch (alt84) {
+                case 1 :
+                    // InternalActionDSL.g:5099:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
+                    {
+                    otherlv_12=(Token)match(input,92,FOLLOW_82); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
+                      			
+                    }
+                    otherlv_13=(Token)match(input,91,FOLLOW_41); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
+                      			
+                    }
+                    // InternalActionDSL.g:5107:4: ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalActionDSL.g:5108:5: (lv_default_14_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:5108:5: (lv_default_14_0= ruleXExpression )
+                    // InternalActionDSL.g:5109:6: lv_default_14_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_84);
+                    lv_default_14_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+                      						}
+                      						set(
+                      							current,
+                      							"default",
+                      							lv_default_14_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_15=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_15, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXSwitchExpression"
+
+
+    // $ANTLR start "entryRuleXCasePart"
+    // InternalActionDSL.g:5135:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
+    public final EObject entryRuleXCasePart() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCasePart = null;
+
+
+        try {
+            // InternalActionDSL.g:5135:50: (iv_ruleXCasePart= ruleXCasePart EOF )
+            // InternalActionDSL.g:5136:2: iv_ruleXCasePart= ruleXCasePart EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXCasePartRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXCasePart=ruleXCasePart();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXCasePart; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXCasePart"
+
+
+    // $ANTLR start "ruleXCasePart"
+    // InternalActionDSL.g:5142:1: ruleXCasePart returns [EObject current=null] : ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) ;
+    public final EObject ruleXCasePart() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token lv_fallThrough_6_0=null;
+        EObject lv_typeGuard_1_0 = null;
+
+        EObject lv_case_3_0 = null;
+
+        EObject lv_then_5_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:5148:2: ( ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) )
+            // InternalActionDSL.g:5149:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
+            {
+            // InternalActionDSL.g:5149:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
+            // InternalActionDSL.g:5150:3: () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            {
+            // InternalActionDSL.g:5150:3: ()
+            // InternalActionDSL.g:5151:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalActionDSL.g:5157:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
+            int alt85=2;
+            int LA85_0 = input.LA(1);
+
+            if ( (LA85_0==RULE_ID||LA85_0==47||LA85_0==72) ) {
+                alt85=1;
+            }
+            switch (alt85) {
+                case 1 :
+                    // InternalActionDSL.g:5158:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    {
+                    // InternalActionDSL.g:5158:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalActionDSL.g:5159:5: lv_typeGuard_1_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_85);
+                    lv_typeGuard_1_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getXCasePartRule());
+                      					}
+                      					set(
+                      						current,
+                      						"typeGuard",
+                      						lv_typeGuard_1_0,
+                      						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:5176:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
+            int alt86=2;
+            int LA86_0 = input.LA(1);
+
+            if ( (LA86_0==93) ) {
+                alt86=1;
+            }
+            switch (alt86) {
+                case 1 :
+                    // InternalActionDSL.g:5177:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
+                    {
+                    otherlv_2=(Token)match(input,93,FOLLOW_41); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
+                      			
+                    }
+                    // InternalActionDSL.g:5181:4: ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalActionDSL.g:5182:5: (lv_case_3_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:5182:5: (lv_case_3_0= ruleXExpression )
+                    // InternalActionDSL.g:5183:6: lv_case_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_86);
+                    lv_case_3_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXCasePartRule());
+                      						}
+                      						set(
+                      							current,
+                      							"case",
+                      							lv_case_3_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:5201:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            int alt87=2;
+            int LA87_0 = input.LA(1);
+
+            if ( (LA87_0==91) ) {
+                alt87=1;
+            }
+            else if ( (LA87_0==48) ) {
+                alt87=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 87, 0, input);
+
+                throw nvae;
+            }
+            switch (alt87) {
+                case 1 :
+                    // InternalActionDSL.g:5202:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    {
+                    // InternalActionDSL.g:5202:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalActionDSL.g:5203:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
+                    {
+                    otherlv_4=(Token)match(input,91,FOLLOW_41); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
+                      				
+                    }
+                    // InternalActionDSL.g:5207:5: ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalActionDSL.g:5208:6: (lv_then_5_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:5208:6: (lv_then_5_0= ruleXExpression )
+                    // InternalActionDSL.g:5209:7: lv_then_5_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_then_5_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElementForParent(grammarAccess.getXCasePartRule());
+                      							}
+                      							set(
+                      								current,
+                      								"then",
+                      								lv_then_5_0,
+                      								"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:5228:4: ( (lv_fallThrough_6_0= ',' ) )
+                    {
+                    // InternalActionDSL.g:5228:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalActionDSL.g:5229:5: (lv_fallThrough_6_0= ',' )
+                    {
+                    // InternalActionDSL.g:5229:5: (lv_fallThrough_6_0= ',' )
+                    // InternalActionDSL.g:5230:6: lv_fallThrough_6_0= ','
+                    {
+                    lv_fallThrough_6_0=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXCasePartRule());
+                      						}
+                      						setWithLastConsumed(current, "fallThrough", true, ",");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXCasePart"
+
+
+    // $ANTLR start "entryRuleXForLoopExpression"
+    // InternalActionDSL.g:5247:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
+    public final EObject entryRuleXForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXForLoopExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:5247:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
+            // InternalActionDSL.g:5248:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXForLoopExpression=ruleXForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXForLoopExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXForLoopExpression"
+
+
+    // $ANTLR start "ruleXForLoopExpression"
+    // InternalActionDSL.g:5254:1: ruleXForLoopExpression returns [EObject current=null] : ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
+    public final EObject ruleXForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_declaredParam_3_0 = null;
+
+        EObject lv_forExpression_5_0 = null;
+
+        EObject lv_eachExpression_7_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:5260:2: ( ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
+            // InternalActionDSL.g:5261:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
+            {
+            // InternalActionDSL.g:5261:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
+            // InternalActionDSL.g:5262:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
+            {
+            // InternalActionDSL.g:5262:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+            // InternalActionDSL.g:5263:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            {
+            // InternalActionDSL.g:5276:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalActionDSL.g:5277:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+            {
+            // InternalActionDSL.g:5277:5: ()
+            // InternalActionDSL.g:5278:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,94,FOLLOW_79); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
+              				
+            }
+            otherlv_2=(Token)match(input,47,FOLLOW_54); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+              				
+            }
+            // InternalActionDSL.g:5292:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+            // InternalActionDSL.g:5293:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            {
+            // InternalActionDSL.g:5293:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalActionDSL.g:5294:7: lv_declaredParam_3_0= ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+
+              							newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0());
+              						
+            }
+            pushFollow(FOLLOW_82);
+            lv_declaredParam_3_0=ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              							if (current==null) {
+              								current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+              							}
+              							set(
+              								current,
+              								"declaredParam",
+              								lv_declaredParam_3_0,
+              								"org.eclipse.xtext.xbase.Xbase.JvmFormalParameter");
+              							afterParserOrEnumRuleCall();
+              						
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,91,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:5317:3: ( (lv_forExpression_5_0= ruleXExpression ) )
+            // InternalActionDSL.g:5318:4: (lv_forExpression_5_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:5318:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalActionDSL.g:5319:5: lv_forExpression_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_39);
+            lv_forExpression_5_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+              					}
+              					set(
+              						current,
+              						"forExpression",
+              						lv_forExpression_5_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,49,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
+              		
+            }
+            // InternalActionDSL.g:5340:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalActionDSL.g:5341:4: (lv_eachExpression_7_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:5341:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalActionDSL.g:5342:5: lv_eachExpression_7_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_eachExpression_7_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+              					}
+              					set(
+              						current,
+              						"eachExpression",
+              						lv_eachExpression_7_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXForLoopExpression"
+
+
+    // $ANTLR start "entryRuleXBasicForLoopExpression"
+    // InternalActionDSL.g:5363:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
+    public final EObject entryRuleXBasicForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBasicForLoopExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:5363:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
+            // InternalActionDSL.g:5364:2: iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXBasicForLoopExpression=ruleXBasicForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXBasicForLoopExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXBasicForLoopExpression"
+
+
+    // $ANTLR start "ruleXBasicForLoopExpression"
+    // InternalActionDSL.g:5370:1: ruleXBasicForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) ;
+    public final EObject ruleXBasicForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        EObject lv_initExpressions_3_0 = null;
+
+        EObject lv_initExpressions_5_0 = null;
+
+        EObject lv_expression_7_0 = null;
+
+        EObject lv_updateExpressions_9_0 = null;
+
+        EObject lv_updateExpressions_11_0 = null;
+
+        EObject lv_eachExpression_13_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:5376:2: ( ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) )
+            // InternalActionDSL.g:5377:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
+            {
+            // InternalActionDSL.g:5377:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
+            // InternalActionDSL.g:5378:3: () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) )
+            {
+            // InternalActionDSL.g:5378:3: ()
+            // InternalActionDSL.g:5379:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,94,FOLLOW_79); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,47,FOLLOW_87); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalActionDSL.g:5393:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
+            int alt89=2;
+            int LA89_0 = input.LA(1);
+
+            if ( ((LA89_0>=RULE_ID && LA89_0<=RULE_DECIMAL)||LA89_0==14||(LA89_0>=40 && LA89_0<=42)||LA89_0==47||(LA89_0>=51 && LA89_0<=52)||LA89_0==59||(LA89_0>=75 && LA89_0<=76)||LA89_0==80||LA89_0==88||LA89_0==90||(LA89_0>=94 && LA89_0<=108)||LA89_0==110) ) {
+                alt89=1;
+            }
+            switch (alt89) {
+                case 1 :
+                    // InternalActionDSL.g:5394:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    {
+                    // InternalActionDSL.g:5394:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
+                    // InternalActionDSL.g:5395:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    {
+                    // InternalActionDSL.g:5395:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalActionDSL.g:5396:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_88);
+                    lv_initExpressions_3_0=ruleXExpressionOrVarDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+                      						}
+                      						add(
+                      							current,
+                      							"initExpressions",
+                      							lv_initExpressions_3_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:5413:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    loop88:
+                    do {
+                        int alt88=2;
+                        int LA88_0 = input.LA(1);
+
+                        if ( (LA88_0==48) ) {
+                            alt88=1;
+                        }
+
+
+                        switch (alt88) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:5414:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,48,FOLLOW_89); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalActionDSL.g:5418:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalActionDSL.g:5419:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    {
+                    	    // InternalActionDSL.g:5419:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalActionDSL.g:5420:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_88);
+                    	    lv_initExpressions_5_0=ruleXExpressionOrVarDeclaration();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"initExpressions",
+                    	      								lv_initExpressions_5_0,
+                    	      								"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop88;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,45,FOLLOW_90); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
+              		
+            }
+            // InternalActionDSL.g:5443:3: ( (lv_expression_7_0= ruleXExpression ) )?
+            int alt90=2;
+            int LA90_0 = input.LA(1);
+
+            if ( ((LA90_0>=RULE_ID && LA90_0<=RULE_DECIMAL)||LA90_0==14||(LA90_0>=40 && LA90_0<=42)||LA90_0==47||(LA90_0>=51 && LA90_0<=52)||LA90_0==59||(LA90_0>=75 && LA90_0<=76)||LA90_0==80||LA90_0==88||LA90_0==90||(LA90_0>=94 && LA90_0<=96)||(LA90_0>=99 && LA90_0<=108)||LA90_0==110) ) {
+                alt90=1;
+            }
+            switch (alt90) {
+                case 1 :
+                    // InternalActionDSL.g:5444:4: (lv_expression_7_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:5444:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalActionDSL.g:5445:5: lv_expression_7_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_91);
+                    lv_expression_7_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+                      					}
+                      					set(
+                      						current,
+                      						"expression",
+                      						lv_expression_7_0,
+                      						"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_8=(Token)match(input,45,FOLLOW_37); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
+              		
+            }
+            // InternalActionDSL.g:5466:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
+            int alt92=2;
+            int LA92_0 = input.LA(1);
+
+            if ( ((LA92_0>=RULE_ID && LA92_0<=RULE_DECIMAL)||LA92_0==14||(LA92_0>=40 && LA92_0<=42)||LA92_0==47||(LA92_0>=51 && LA92_0<=52)||LA92_0==59||(LA92_0>=75 && LA92_0<=76)||LA92_0==80||LA92_0==88||LA92_0==90||(LA92_0>=94 && LA92_0<=96)||(LA92_0>=99 && LA92_0<=108)||LA92_0==110) ) {
+                alt92=1;
+            }
+            switch (alt92) {
+                case 1 :
+                    // InternalActionDSL.g:5467:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    {
+                    // InternalActionDSL.g:5467:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
+                    // InternalActionDSL.g:5468:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:5468:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalActionDSL.g:5469:6: lv_updateExpressions_9_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_38);
+                    lv_updateExpressions_9_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+                      						}
+                      						add(
+                      							current,
+                      							"updateExpressions",
+                      							lv_updateExpressions_9_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:5486:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    loop91:
+                    do {
+                        int alt91=2;
+                        int LA91_0 = input.LA(1);
+
+                        if ( (LA91_0==48) ) {
+                            alt91=1;
+                        }
+
+
+                        switch (alt91) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:5487:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_10=(Token)match(input,48,FOLLOW_41); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
+                    	      				
+                    	    }
+                    	    // InternalActionDSL.g:5491:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalActionDSL.g:5492:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    {
+                    	    // InternalActionDSL.g:5492:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalActionDSL.g:5493:7: lv_updateExpressions_11_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_38);
+                    	    lv_updateExpressions_11_0=ruleXExpression();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"updateExpressions",
+                    	      								lv_updateExpressions_11_0,
+                    	      								"org.eclipse.xtext.xbase.Xbase.XExpression");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop91;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_12=(Token)match(input,49,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
+              		
+            }
+            // InternalActionDSL.g:5516:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalActionDSL.g:5517:4: (lv_eachExpression_13_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:5517:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalActionDSL.g:5518:5: lv_eachExpression_13_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_eachExpression_13_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+              					}
+              					set(
+              						current,
+              						"eachExpression",
+              						lv_eachExpression_13_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXBasicForLoopExpression"
+
+
+    // $ANTLR start "entryRuleXWhileExpression"
+    // InternalActionDSL.g:5539:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
+    public final EObject entryRuleXWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXWhileExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:5539:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
+            // InternalActionDSL.g:5540:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXWhileExpression=ruleXWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXWhileExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXWhileExpression"
+
+
+    // $ANTLR start "ruleXWhileExpression"
+    // InternalActionDSL.g:5546:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
+    public final EObject ruleXWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        EObject lv_predicate_3_0 = null;
+
+        EObject lv_body_5_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:5552:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
+            // InternalActionDSL.g:5553:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            {
+            // InternalActionDSL.g:5553:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalActionDSL.g:5554:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
+            {
+            // InternalActionDSL.g:5554:3: ()
+            // InternalActionDSL.g:5555:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,95,FOLLOW_79); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,47,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalActionDSL.g:5569:3: ( (lv_predicate_3_0= ruleXExpression ) )
+            // InternalActionDSL.g:5570:4: (lv_predicate_3_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:5570:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalActionDSL.g:5571:5: lv_predicate_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_39);
+            lv_predicate_3_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+              					}
+              					set(
+              						current,
+              						"predicate",
+              						lv_predicate_3_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,49,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
+              		
+            }
+            // InternalActionDSL.g:5592:3: ( (lv_body_5_0= ruleXExpression ) )
+            // InternalActionDSL.g:5593:4: (lv_body_5_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:5593:4: (lv_body_5_0= ruleXExpression )
+            // InternalActionDSL.g:5594:5: lv_body_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_body_5_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+              					}
+              					set(
+              						current,
+              						"body",
+              						lv_body_5_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXWhileExpression"
+
+
+    // $ANTLR start "entryRuleXDoWhileExpression"
+    // InternalActionDSL.g:5615:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
+    public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXDoWhileExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:5615:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
+            // InternalActionDSL.g:5616:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXDoWhileExpression=ruleXDoWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXDoWhileExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXDoWhileExpression"
+
+
+    // $ANTLR start "ruleXDoWhileExpression"
+    // InternalActionDSL.g:5622:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
+    public final EObject ruleXDoWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_body_2_0 = null;
+
+        EObject lv_predicate_5_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:5628:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
+            // InternalActionDSL.g:5629:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            {
+            // InternalActionDSL.g:5629:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalActionDSL.g:5630:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
+            {
+            // InternalActionDSL.g:5630:3: ()
+            // InternalActionDSL.g:5631:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,96,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:5641:3: ( (lv_body_2_0= ruleXExpression ) )
+            // InternalActionDSL.g:5642:4: (lv_body_2_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:5642:4: (lv_body_2_0= ruleXExpression )
+            // InternalActionDSL.g:5643:5: lv_body_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_92);
+            lv_body_2_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+              					}
+              					set(
+              						current,
+              						"body",
+              						lv_body_2_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,95,FOLLOW_79); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
+              		
+            }
+            otherlv_4=(Token)match(input,47,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
+              		
+            }
+            // InternalActionDSL.g:5668:3: ( (lv_predicate_5_0= ruleXExpression ) )
+            // InternalActionDSL.g:5669:4: (lv_predicate_5_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:5669:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalActionDSL.g:5670:5: lv_predicate_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_39);
+            lv_predicate_5_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+              					}
+              					set(
+              						current,
+              						"predicate",
+              						lv_predicate_5_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXDoWhileExpression"
+
+
+    // $ANTLR start "entryRuleXBlockExpression"
+    // InternalActionDSL.g:5695:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
+    public final EObject entryRuleXBlockExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBlockExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:5695:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
+            // InternalActionDSL.g:5696:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXBlockExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXBlockExpression=ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXBlockExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXBlockExpression"
+
+
+    // $ANTLR start "ruleXBlockExpression"
+    // InternalActionDSL.g:5702:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
+    public final EObject ruleXBlockExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        EObject lv_expressions_2_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:5708:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
+            // InternalActionDSL.g:5709:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            {
+            // InternalActionDSL.g:5709:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalActionDSL.g:5710:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
+            {
+            // InternalActionDSL.g:5710:3: ()
+            // InternalActionDSL.g:5711:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,14,FOLLOW_93); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:5721:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
+            loop94:
+            do {
+                int alt94=2;
+                int LA94_0 = input.LA(1);
+
+                if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_DECIMAL)||LA94_0==14||(LA94_0>=40 && LA94_0<=42)||LA94_0==47||(LA94_0>=51 && LA94_0<=52)||LA94_0==59||(LA94_0>=75 && LA94_0<=76)||LA94_0==80||LA94_0==88||LA94_0==90||(LA94_0>=94 && LA94_0<=108)||LA94_0==110) ) {
+                    alt94=1;
+                }
+
+
+                switch (alt94) {
+            	case 1 :
+            	    // InternalActionDSL.g:5722:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
+            	    {
+            	    // InternalActionDSL.g:5722:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalActionDSL.g:5723:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    {
+            	    // InternalActionDSL.g:5723:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalActionDSL.g:5724:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_94);
+            	    lv_expressions_2_0=ruleXExpressionOrVarDeclaration();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
+            	      						}
+            	      						add(
+            	      							current,
+            	      							"expressions",
+            	      							lv_expressions_2_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XExpressionOrVarDeclaration");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalActionDSL.g:5741:4: (otherlv_3= ';' )?
+            	    int alt93=2;
+            	    int LA93_0 = input.LA(1);
+
+            	    if ( (LA93_0==45) ) {
+            	        alt93=1;
+            	    }
+            	    switch (alt93) {
+            	        case 1 :
+            	            // InternalActionDSL.g:5742:5: otherlv_3= ';'
+            	            {
+            	            otherlv_3=(Token)match(input,45,FOLLOW_93); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+            	              				
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop94;
+                }
+            } while (true);
+
+            otherlv_4=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXBlockExpression"
+
+
+    // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
+    // InternalActionDSL.g:5756:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
+    public final EObject entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpressionOrVarDeclaration = null;
+
+
+        try {
+            // InternalActionDSL.g:5756:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
+            // InternalActionDSL.g:5757:2: iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXExpressionOrVarDeclaration=ruleXExpressionOrVarDeclaration();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXExpressionOrVarDeclaration; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXExpressionOrVarDeclaration"
+
+
+    // $ANTLR start "ruleXExpressionOrVarDeclaration"
+    // InternalActionDSL.g:5763:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
+    public final EObject ruleXExpressionOrVarDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XVariableDeclaration_0 = null;
+
+        EObject this_XExpression_1 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:5769:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
+            // InternalActionDSL.g:5770:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            {
+            // InternalActionDSL.g:5770:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            int alt95=2;
+            int LA95_0 = input.LA(1);
+
+            if ( ((LA95_0>=97 && LA95_0<=98)) ) {
+                alt95=1;
+            }
+            else if ( ((LA95_0>=RULE_ID && LA95_0<=RULE_DECIMAL)||LA95_0==14||(LA95_0>=40 && LA95_0<=42)||LA95_0==47||(LA95_0>=51 && LA95_0<=52)||LA95_0==59||(LA95_0>=75 && LA95_0<=76)||LA95_0==80||LA95_0==88||LA95_0==90||(LA95_0>=94 && LA95_0<=96)||(LA95_0>=99 && LA95_0<=108)||LA95_0==110) ) {
+                alt95=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 95, 0, input);
+
+                throw nvae;
+            }
+            switch (alt95) {
+                case 1 :
+                    // InternalActionDSL.g:5771:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XVariableDeclaration_0=ruleXVariableDeclaration();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XVariableDeclaration_0;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:5780:3: this_XExpression_1= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XExpression_1=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XExpression_1;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXExpressionOrVarDeclaration"
+
+
+    // $ANTLR start "entryRuleXVariableDeclaration"
+    // InternalActionDSL.g:5792:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
+    public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXVariableDeclaration = null;
+
+
+        try {
+            // InternalActionDSL.g:5792:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
+            // InternalActionDSL.g:5793:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXVariableDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXVariableDeclaration=ruleXVariableDeclaration();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXVariableDeclaration; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXVariableDeclaration"
+
+
+    // $ANTLR start "ruleXVariableDeclaration"
+    // InternalActionDSL.g:5799:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
+    public final EObject ruleXVariableDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_writeable_1_0=null;
+        Token otherlv_2=null;
+        Token otherlv_6=null;
+        EObject lv_type_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_5_0 = null;
+
+        EObject lv_right_7_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:5805:2: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
+            // InternalActionDSL.g:5806:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
+            {
+            // InternalActionDSL.g:5806:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
+            // InternalActionDSL.g:5807:3: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            {
+            // InternalActionDSL.g:5807:3: ()
+            // InternalActionDSL.g:5808:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalActionDSL.g:5814:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
+            int alt96=2;
+            int LA96_0 = input.LA(1);
+
+            if ( (LA96_0==97) ) {
+                alt96=1;
+            }
+            else if ( (LA96_0==98) ) {
+                alt96=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 96, 0, input);
+
+                throw nvae;
+            }
+            switch (alt96) {
+                case 1 :
+                    // InternalActionDSL.g:5815:4: ( (lv_writeable_1_0= 'var' ) )
+                    {
+                    // InternalActionDSL.g:5815:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalActionDSL.g:5816:5: (lv_writeable_1_0= 'var' )
+                    {
+                    // InternalActionDSL.g:5816:5: (lv_writeable_1_0= 'var' )
+                    // InternalActionDSL.g:5817:6: lv_writeable_1_0= 'var'
+                    {
+                    lv_writeable_1_0=(Token)match(input,97,FOLLOW_54); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXVariableDeclarationRule());
+                      						}
+                      						setWithLastConsumed(current, "writeable", true, "var");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:5830:4: otherlv_2= 'val'
+                    {
+                    otherlv_2=(Token)match(input,98,FOLLOW_54); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:5835:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
+            int alt97=2;
+            int LA97_0 = input.LA(1);
+
+            if ( (LA97_0==RULE_ID) ) {
+                int LA97_1 = input.LA(2);
+
+                if ( (synpred35_InternalActionDSL()) ) {
+                    alt97=1;
+                }
+                else if ( (true) ) {
+                    alt97=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 97, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA97_0==47) && (synpred35_InternalActionDSL())) {
+                alt97=1;
+            }
+            else if ( (LA97_0==72) && (synpred35_InternalActionDSL())) {
+                alt97=1;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 97, 0, input);
+
+                throw nvae;
+            }
+            switch (alt97) {
+                case 1 :
+                    // InternalActionDSL.g:5836:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    {
+                    // InternalActionDSL.g:5836:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalActionDSL.g:5837:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    {
+                    // InternalActionDSL.g:5850:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalActionDSL.g:5851:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
+                    {
+                    // InternalActionDSL.g:5851:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
+                    // InternalActionDSL.g:5852:7: (lv_type_3_0= ruleJvmTypeReference )
+                    {
+                    // InternalActionDSL.g:5852:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalActionDSL.g:5853:8: lv_type_3_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0());
+                      							
+                    }
+                    pushFollow(FOLLOW_4);
+                    lv_type_3_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      								if (current==null) {
+                      									current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+                      								}
+                      								set(
+                      									current,
+                      									"type",
+                      									lv_type_3_0,
+                      									"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+                      								afterParserOrEnumRuleCall();
+                      							
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:5870:6: ( (lv_name_4_0= ruleValidID ) )
+                    // InternalActionDSL.g:5871:7: (lv_name_4_0= ruleValidID )
+                    {
+                    // InternalActionDSL.g:5871:7: (lv_name_4_0= ruleValidID )
+                    // InternalActionDSL.g:5872:8: lv_name_4_0= ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0());
+                      							
+                    }
+                    pushFollow(FOLLOW_95);
+                    lv_name_4_0=ruleValidID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      								if (current==null) {
+                      									current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+                      								}
+                      								set(
+                      									current,
+                      									"name",
+                      									lv_name_4_0,
+                      									"org.eclipse.xtext.xbase.Xtype.ValidID");
+                      								afterParserOrEnumRuleCall();
+                      							
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:5892:4: ( (lv_name_5_0= ruleValidID ) )
+                    {
+                    // InternalActionDSL.g:5892:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalActionDSL.g:5893:5: (lv_name_5_0= ruleValidID )
+                    {
+                    // InternalActionDSL.g:5893:5: (lv_name_5_0= ruleValidID )
+                    // InternalActionDSL.g:5894:6: lv_name_5_0= ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_95);
+                    lv_name_5_0=ruleValidID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+                      						}
+                      						set(
+                      							current,
+                      							"name",
+                      							lv_name_5_0,
+                      							"org.eclipse.xtext.xbase.Xtype.ValidID");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:5912:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            int alt98=2;
+            int LA98_0 = input.LA(1);
+
+            if ( (LA98_0==50) ) {
+                alt98=1;
+            }
+            switch (alt98) {
+                case 1 :
+                    // InternalActionDSL.g:5913:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
+                    {
+                    otherlv_6=(Token)match(input,50,FOLLOW_41); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
+                      			
+                    }
+                    // InternalActionDSL.g:5917:4: ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalActionDSL.g:5918:5: (lv_right_7_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:5918:5: (lv_right_7_0= ruleXExpression )
+                    // InternalActionDSL.g:5919:6: lv_right_7_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_right_7_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+                      						}
+                      						set(
+                      							current,
+                      							"right",
+                      							lv_right_7_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXVariableDeclaration"
+
+
+    // $ANTLR start "entryRuleJvmFormalParameter"
+    // InternalActionDSL.g:5941:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
+    public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmFormalParameter = null;
+
+
+        try {
+            // InternalActionDSL.g:5941:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
+            // InternalActionDSL.g:5942:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleJvmFormalParameter=ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleJvmFormalParameter; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleJvmFormalParameter"
+
+
+    // $ANTLR start "ruleJvmFormalParameter"
+    // InternalActionDSL.g:5948:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
+    public final EObject ruleJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_parameterType_0_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:5954:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalActionDSL.g:5955:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            {
+            // InternalActionDSL.g:5955:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalActionDSL.g:5956:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
+            {
+            // InternalActionDSL.g:5956:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
+            int alt99=2;
+            int LA99_0 = input.LA(1);
+
+            if ( (LA99_0==RULE_ID) ) {
+                int LA99_1 = input.LA(2);
+
+                if ( (LA99_1==RULE_ID||LA99_1==52||LA99_1==59||LA99_1==84) ) {
+                    alt99=1;
+                }
+            }
+            else if ( (LA99_0==47||LA99_0==72) ) {
+                alt99=1;
+            }
+            switch (alt99) {
+                case 1 :
+                    // InternalActionDSL.g:5957:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    {
+                    // InternalActionDSL.g:5957:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalActionDSL.g:5958:5: lv_parameterType_0_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_4);
+                    lv_parameterType_0_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+                      					}
+                      					set(
+                      						current,
+                      						"parameterType",
+                      						lv_parameterType_0_0,
+                      						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:5975:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalActionDSL.g:5976:4: (lv_name_1_0= ruleValidID )
+            {
+            // InternalActionDSL.g:5976:4: (lv_name_1_0= ruleValidID )
+            // InternalActionDSL.g:5977:5: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.ValidID");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmFormalParameter"
+
+
+    // $ANTLR start "entryRuleFullJvmFormalParameter"
+    // InternalActionDSL.g:5998:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
+    public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFullJvmFormalParameter = null;
+
+
+        try {
+            // InternalActionDSL.g:5998:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
+            // InternalActionDSL.g:5999:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleFullJvmFormalParameter=ruleFullJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFullJvmFormalParameter; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFullJvmFormalParameter"
+
+
+    // $ANTLR start "ruleFullJvmFormalParameter"
+    // InternalActionDSL.g:6005:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
+    public final EObject ruleFullJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_parameterType_0_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6011:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalActionDSL.g:6012:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            {
+            // InternalActionDSL.g:6012:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalActionDSL.g:6013:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
+            {
+            // InternalActionDSL.g:6013:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
+            // InternalActionDSL.g:6014:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:6014:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalActionDSL.g:6015:5: lv_parameterType_0_0= ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0());
+              				
+            }
+            pushFollow(FOLLOW_4);
+            lv_parameterType_0_0=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+              					}
+              					set(
+              						current,
+              						"parameterType",
+              						lv_parameterType_0_0,
+              						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:6032:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalActionDSL.g:6033:4: (lv_name_1_0= ruleValidID )
+            {
+            // InternalActionDSL.g:6033:4: (lv_name_1_0= ruleValidID )
+            // InternalActionDSL.g:6034:5: lv_name_1_0= ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_name_1_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.ValidID");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFullJvmFormalParameter"
+
+
+    // $ANTLR start "entryRuleXFeatureCall"
+    // InternalActionDSL.g:6055:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
+    public final EObject entryRuleXFeatureCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXFeatureCall = null;
+
+
+        try {
+            // InternalActionDSL.g:6055:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
+            // InternalActionDSL.g:6056:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXFeatureCall=ruleXFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXFeatureCall; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXFeatureCall"
+
+
+    // $ANTLR start "ruleXFeatureCall"
+    // InternalActionDSL.g:6062:1: ruleXFeatureCall returns [EObject current=null] : ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) ;
+    public final EObject ruleXFeatureCall() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token lv_explicitOperationCall_7_0=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        EObject lv_typeArguments_2_0 = null;
+
+        EObject lv_typeArguments_4_0 = null;
+
+        EObject lv_featureCallArguments_8_0 = null;
+
+        EObject lv_featureCallArguments_9_0 = null;
+
+        EObject lv_featureCallArguments_11_0 = null;
+
+        EObject lv_featureCallArguments_13_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6068:2: ( ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) )
+            // InternalActionDSL.g:6069:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
+            {
+            // InternalActionDSL.g:6069:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
+            // InternalActionDSL.g:6070:3: () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            {
+            // InternalActionDSL.g:6070:3: ()
+            // InternalActionDSL.g:6071:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalActionDSL.g:6077:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
+            int alt101=2;
+            int LA101_0 = input.LA(1);
+
+            if ( (LA101_0==59) ) {
+                alt101=1;
+            }
+            switch (alt101) {
+                case 1 :
+                    // InternalActionDSL.g:6078:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
+                    {
+                    otherlv_1=(Token)match(input,59,FOLLOW_66); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
+                      			
+                    }
+                    // InternalActionDSL.g:6082:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalActionDSL.g:6083:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalActionDSL.g:6083:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalActionDSL.g:6084:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_67);
+                    lv_typeArguments_2_0=ruleJvmArgumentTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+                      						}
+                      						add(
+                      							current,
+                      							"typeArguments",
+                      							lv_typeArguments_2_0,
+                      							"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:6101:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop100:
+                    do {
+                        int alt100=2;
+                        int LA100_0 = input.LA(1);
+
+                        if ( (LA100_0==48) ) {
+                            alt100=1;
+                        }
+
+
+                        switch (alt100) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:6102:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_3=(Token)match(input,48,FOLLOW_66); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
+                    	      				
+                    	    }
+                    	    // InternalActionDSL.g:6106:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalActionDSL.g:6107:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalActionDSL.g:6107:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalActionDSL.g:6108:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_67);
+                    	    lv_typeArguments_4_0=ruleJvmArgumentTypeReference();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"typeArguments",
+                    	      								lv_typeArguments_4_0,
+                    	      								"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop100;
+                        }
+                    } while (true);
+
+                    otherlv_5=(Token)match(input,60,FOLLOW_65); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:6131:3: ( ( ruleIdOrSuper ) )
+            // InternalActionDSL.g:6132:4: ( ruleIdOrSuper )
+            {
+            // InternalActionDSL.g:6132:4: ( ruleIdOrSuper )
+            // InternalActionDSL.g:6133:5: ruleIdOrSuper
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getXFeatureCallRule());
+              					}
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0());
+              				
+            }
+            pushFollow(FOLLOW_96);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:6147:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?
+            int alt104=2;
+            alt104 = dfa104.predict(input);
+            switch (alt104) {
+                case 1 :
+                    // InternalActionDSL.g:6148:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')'
+                    {
+                    // InternalActionDSL.g:6148:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
+                    // InternalActionDSL.g:6149:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
+                    {
+                    // InternalActionDSL.g:6153:5: (lv_explicitOperationCall_7_0= '(' )
+                    // InternalActionDSL.g:6154:6: lv_explicitOperationCall_7_0= '('
+                    {
+                    lv_explicitOperationCall_7_0=(Token)match(input,47,FOLLOW_69); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXFeatureCallRule());
+                      						}
+                      						setWithLastConsumed(current, "explicitOperationCall", true, "(");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:6166:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
+                    int alt103=3;
+                    alt103 = dfa103.predict(input);
+                    switch (alt103) {
+                        case 1 :
+                            // InternalActionDSL.g:6167:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            {
+                            // InternalActionDSL.g:6167:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalActionDSL.g:6168:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            {
+                            // InternalActionDSL.g:6193:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalActionDSL.g:6194:7: lv_featureCallArguments_8_0= ruleXShortClosure
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_39);
+                            lv_featureCallArguments_8_0=ruleXShortClosure();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							if (current==null) {
+                              								current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+                              							}
+                              							add(
+                              								current,
+                              								"featureCallArguments",
+                              								lv_featureCallArguments_8_0,
+                              								"org.eclipse.xtext.xbase.Xbase.XShortClosure");
+                              							afterParserOrEnumRuleCall();
+                              						
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // InternalActionDSL.g:6212:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            {
+                            // InternalActionDSL.g:6212:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalActionDSL.g:6213:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            {
+                            // InternalActionDSL.g:6213:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
+                            // InternalActionDSL.g:6214:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            {
+                            // InternalActionDSL.g:6214:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalActionDSL.g:6215:8: lv_featureCallArguments_9_0= ruleXExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_38);
+                            lv_featureCallArguments_9_0=ruleXExpression();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+                              								}
+                              								add(
+                              									current,
+                              									"featureCallArguments",
+                              									lv_featureCallArguments_9_0,
+                              									"org.eclipse.xtext.xbase.Xbase.XExpression");
+                              								afterParserOrEnumRuleCall();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalActionDSL.g:6232:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            loop102:
+                            do {
+                                int alt102=2;
+                                int LA102_0 = input.LA(1);
+
+                                if ( (LA102_0==48) ) {
+                                    alt102=1;
+                                }
+
+
+                                switch (alt102) {
+                            	case 1 :
+                            	    // InternalActionDSL.g:6233:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    {
+                            	    otherlv_10=(Token)match(input,48,FOLLOW_41); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
+                            	      						
+                            	    }
+                            	    // InternalActionDSL.g:6237:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalActionDSL.g:6238:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    {
+                            	    // InternalActionDSL.g:6238:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalActionDSL.g:6239:9: lv_featureCallArguments_11_0= ruleXExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_38);
+                            	    lv_featureCallArguments_11_0=ruleXExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									if (current==null) {
+                            	      										current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+                            	      									}
+                            	      									add(
+                            	      										current,
+                            	      										"featureCallArguments",
+                            	      										lv_featureCallArguments_11_0,
+                            	      										"org.eclipse.xtext.xbase.Xbase.XExpression");
+                            	      									afterParserOrEnumRuleCall();
+                            	      								
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop102;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_12=(Token)match(input,49,FOLLOW_97); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:6264:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            int alt105=2;
+            alt105 = dfa105.predict(input);
+            switch (alt105) {
+                case 1 :
+                    // InternalActionDSL.g:6265:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
+                    {
+                    // InternalActionDSL.g:6271:4: (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalActionDSL.g:6272:5: lv_featureCallArguments_13_0= ruleXClosure
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_featureCallArguments_13_0=ruleXClosure();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+                      					}
+                      					add(
+                      						current,
+                      						"featureCallArguments",
+                      						lv_featureCallArguments_13_0,
+                      						"org.eclipse.xtext.xbase.Xbase.XClosure");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXFeatureCall"
+
+
+    // $ANTLR start "entryRuleFeatureCallID"
+    // InternalActionDSL.g:6293:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
+    public final String entryRuleFeatureCallID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleFeatureCallID = null;
+
+
+        try {
+            // InternalActionDSL.g:6293:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
+            // InternalActionDSL.g:6294:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getFeatureCallIDRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleFeatureCallID=ruleFeatureCallID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleFeatureCallID.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleFeatureCallID"
+
+
+    // $ANTLR start "ruleFeatureCallID"
+    // InternalActionDSL.g:6300:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) ;
+    public final AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        AntlrDatatypeRuleToken this_ValidID_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6306:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
+            // InternalActionDSL.g:6307:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            {
+            // InternalActionDSL.g:6307:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            int alt106=5;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                alt106=1;
+                }
+                break;
+            case 99:
+                {
+                alt106=2;
+                }
+                break;
+            case 41:
+                {
+                alt106=3;
+                }
+                break;
+            case 40:
+                {
+                alt106=4;
+                }
+                break;
+            case 42:
+                {
+                alt106=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 106, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt106) {
+                case 1 :
+                    // InternalActionDSL.g:6308:3: this_ValidID_0= ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_ValidID_0=ruleValidID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(this_ValidID_0);
+                      		
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:6319:3: kw= 'extends'
+                    {
+                    kw=(Token)match(input,99,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:6325:3: kw= 'static'
+                    {
+                    kw=(Token)match(input,41,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:6331:3: kw= 'import'
+                    {
+                    kw=(Token)match(input,40,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3());
+                      		
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:6337:3: kw= 'extension'
+                    {
+                    kw=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4());
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleFeatureCallID"
+
+
+    // $ANTLR start "entryRuleIdOrSuper"
+    // InternalActionDSL.g:6346:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
+    public final String entryRuleIdOrSuper() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleIdOrSuper = null;
+
+
+        try {
+            // InternalActionDSL.g:6346:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
+            // InternalActionDSL.g:6347:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getIdOrSuperRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleIdOrSuper=ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleIdOrSuper.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleIdOrSuper"
+
+
+    // $ANTLR start "ruleIdOrSuper"
+    // InternalActionDSL.g:6353:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
+    public final AntlrDatatypeRuleToken ruleIdOrSuper() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        AntlrDatatypeRuleToken this_FeatureCallID_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6359:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
+            // InternalActionDSL.g:6360:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            {
+            // InternalActionDSL.g:6360:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            int alt107=2;
+            int LA107_0 = input.LA(1);
+
+            if ( (LA107_0==RULE_ID||(LA107_0>=40 && LA107_0<=42)||LA107_0==99) ) {
+                alt107=1;
+            }
+            else if ( (LA107_0==100) ) {
+                alt107=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 107, 0, input);
+
+                throw nvae;
+            }
+            switch (alt107) {
+                case 1 :
+                    // InternalActionDSL.g:6361:3: this_FeatureCallID_0= ruleFeatureCallID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_FeatureCallID_0=ruleFeatureCallID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(this_FeatureCallID_0);
+                      		
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:6372:3: kw= 'super'
+                    {
+                    kw=(Token)match(input,100,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleIdOrSuper"
+
+
+    // $ANTLR start "entryRuleXConstructorCall"
+    // InternalActionDSL.g:6381:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
+    public final EObject entryRuleXConstructorCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXConstructorCall = null;
+
+
+        try {
+            // InternalActionDSL.g:6381:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
+            // InternalActionDSL.g:6382:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXConstructorCallRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXConstructorCall=ruleXConstructorCall();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXConstructorCall; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXConstructorCall"
+
+
+    // $ANTLR start "ruleXConstructorCall"
+    // InternalActionDSL.g:6388:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) ;
+    public final EObject ruleXConstructorCall() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token lv_explicitConstructorCall_8_0=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        EObject lv_typeArguments_4_0 = null;
+
+        EObject lv_typeArguments_6_0 = null;
+
+        EObject lv_arguments_9_0 = null;
+
+        EObject lv_arguments_10_0 = null;
+
+        EObject lv_arguments_12_0 = null;
+
+        EObject lv_arguments_14_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6394:2: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) )
+            // InternalActionDSL.g:6395:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
+            {
+            // InternalActionDSL.g:6395:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
+            // InternalActionDSL.g:6396:3: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            {
+            // InternalActionDSL.g:6396:3: ()
+            // InternalActionDSL.g:6397:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,101,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:6407:3: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:6408:4: ( ruleQualifiedName )
+            {
+            // InternalActionDSL.g:6408:4: ( ruleQualifiedName )
+            // InternalActionDSL.g:6409:5: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getXConstructorCallRule());
+              					}
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0());
+              				
+            }
+            pushFollow(FOLLOW_98);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:6423:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
+            int alt109=2;
+            alt109 = dfa109.predict(input);
+            switch (alt109) {
+                case 1 :
+                    // InternalActionDSL.g:6424:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
+                    {
+                    // InternalActionDSL.g:6424:4: ( ( '<' )=>otherlv_3= '<' )
+                    // InternalActionDSL.g:6425:5: ( '<' )=>otherlv_3= '<'
+                    {
+                    otherlv_3=(Token)match(input,59,FOLLOW_66); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalActionDSL.g:6431:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    // InternalActionDSL.g:6432:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalActionDSL.g:6432:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalActionDSL.g:6433:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_67);
+                    lv_typeArguments_4_0=ruleJvmArgumentTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+                      						}
+                      						add(
+                      							current,
+                      							"typeArguments",
+                      							lv_typeArguments_4_0,
+                      							"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:6450:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop108:
+                    do {
+                        int alt108=2;
+                        int LA108_0 = input.LA(1);
+
+                        if ( (LA108_0==48) ) {
+                            alt108=1;
+                        }
+
+
+                        switch (alt108) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:6451:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_5=(Token)match(input,48,FOLLOW_66); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
+                    	      				
+                    	    }
+                    	    // InternalActionDSL.g:6455:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalActionDSL.g:6456:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalActionDSL.g:6456:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalActionDSL.g:6457:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_67);
+                    	    lv_typeArguments_6_0=ruleJvmArgumentTypeReference();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"typeArguments",
+                    	      								lv_typeArguments_6_0,
+                    	      								"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop108;
+                        }
+                    } while (true);
+
+                    otherlv_7=(Token)match(input,60,FOLLOW_96); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:6480:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
+            int alt112=2;
+            alt112 = dfa112.predict(input);
+            switch (alt112) {
+                case 1 :
+                    // InternalActionDSL.g:6481:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
+                    {
+                    // InternalActionDSL.g:6481:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
+                    // InternalActionDSL.g:6482:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
+                    {
+                    // InternalActionDSL.g:6486:5: (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalActionDSL.g:6487:6: lv_explicitConstructorCall_8_0= '('
+                    {
+                    lv_explicitConstructorCall_8_0=(Token)match(input,47,FOLLOW_69); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXConstructorCallRule());
+                      						}
+                      						setWithLastConsumed(current, "explicitConstructorCall", true, "(");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:6499:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
+                    int alt111=3;
+                    alt111 = dfa111.predict(input);
+                    switch (alt111) {
+                        case 1 :
+                            // InternalActionDSL.g:6500:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            {
+                            // InternalActionDSL.g:6500:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalActionDSL.g:6501:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
+                            {
+                            // InternalActionDSL.g:6526:6: (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalActionDSL.g:6527:7: lv_arguments_9_0= ruleXShortClosure
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_39);
+                            lv_arguments_9_0=ruleXShortClosure();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							if (current==null) {
+                              								current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+                              							}
+                              							add(
+                              								current,
+                              								"arguments",
+                              								lv_arguments_9_0,
+                              								"org.eclipse.xtext.xbase.Xbase.XShortClosure");
+                              							afterParserOrEnumRuleCall();
+                              						
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // InternalActionDSL.g:6545:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            {
+                            // InternalActionDSL.g:6545:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalActionDSL.g:6546:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            {
+                            // InternalActionDSL.g:6546:6: ( (lv_arguments_10_0= ruleXExpression ) )
+                            // InternalActionDSL.g:6547:7: (lv_arguments_10_0= ruleXExpression )
+                            {
+                            // InternalActionDSL.g:6547:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalActionDSL.g:6548:8: lv_arguments_10_0= ruleXExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_38);
+                            lv_arguments_10_0=ruleXExpression();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+                              								}
+                              								add(
+                              									current,
+                              									"arguments",
+                              									lv_arguments_10_0,
+                              									"org.eclipse.xtext.xbase.Xbase.XExpression");
+                              								afterParserOrEnumRuleCall();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalActionDSL.g:6565:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            loop110:
+                            do {
+                                int alt110=2;
+                                int LA110_0 = input.LA(1);
+
+                                if ( (LA110_0==48) ) {
+                                    alt110=1;
+                                }
+
+
+                                switch (alt110) {
+                            	case 1 :
+                            	    // InternalActionDSL.g:6566:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    {
+                            	    otherlv_11=(Token)match(input,48,FOLLOW_41); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
+                            	      						
+                            	    }
+                            	    // InternalActionDSL.g:6570:7: ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalActionDSL.g:6571:8: (lv_arguments_12_0= ruleXExpression )
+                            	    {
+                            	    // InternalActionDSL.g:6571:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalActionDSL.g:6572:9: lv_arguments_12_0= ruleXExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_38);
+                            	    lv_arguments_12_0=ruleXExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									if (current==null) {
+                            	      										current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+                            	      									}
+                            	      									add(
+                            	      										current,
+                            	      										"arguments",
+                            	      										lv_arguments_12_0,
+                            	      										"org.eclipse.xtext.xbase.Xbase.XExpression");
+                            	      									afterParserOrEnumRuleCall();
+                            	      								
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop110;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_13=(Token)match(input,49,FOLLOW_97); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalActionDSL.g:6597:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            int alt113=2;
+            alt113 = dfa113.predict(input);
+            switch (alt113) {
+                case 1 :
+                    // InternalActionDSL.g:6598:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
+                    {
+                    // InternalActionDSL.g:6604:4: (lv_arguments_14_0= ruleXClosure )
+                    // InternalActionDSL.g:6605:5: lv_arguments_14_0= ruleXClosure
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_arguments_14_0=ruleXClosure();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+                      					}
+                      					add(
+                      						current,
+                      						"arguments",
+                      						lv_arguments_14_0,
+                      						"org.eclipse.xtext.xbase.Xbase.XClosure");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXConstructorCall"
+
+
+    // $ANTLR start "entryRuleXBooleanLiteral"
+    // InternalActionDSL.g:6626:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
+    public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBooleanLiteral = null;
+
+
+        try {
+            // InternalActionDSL.g:6626:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
+            // InternalActionDSL.g:6627:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXBooleanLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXBooleanLiteral=ruleXBooleanLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXBooleanLiteral; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXBooleanLiteral"
+
+
+    // $ANTLR start "ruleXBooleanLiteral"
+    // InternalActionDSL.g:6633:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
+    public final EObject ruleXBooleanLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_isTrue_2_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6639:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
+            // InternalActionDSL.g:6640:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            {
+            // InternalActionDSL.g:6640:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalActionDSL.g:6641:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            {
+            // InternalActionDSL.g:6641:3: ()
+            // InternalActionDSL.g:6642:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalActionDSL.g:6648:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            int alt114=2;
+            int LA114_0 = input.LA(1);
+
+            if ( (LA114_0==102) ) {
+                alt114=1;
+            }
+            else if ( (LA114_0==103) ) {
+                alt114=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 114, 0, input);
+
+                throw nvae;
+            }
+            switch (alt114) {
+                case 1 :
+                    // InternalActionDSL.g:6649:4: otherlv_1= 'false'
+                    {
+                    otherlv_1=(Token)match(input,102,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
+                      			
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:6654:4: ( (lv_isTrue_2_0= 'true' ) )
+                    {
+                    // InternalActionDSL.g:6654:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalActionDSL.g:6655:5: (lv_isTrue_2_0= 'true' )
+                    {
+                    // InternalActionDSL.g:6655:5: (lv_isTrue_2_0= 'true' )
+                    // InternalActionDSL.g:6656:6: lv_isTrue_2_0= 'true'
+                    {
+                    lv_isTrue_2_0=(Token)match(input,103,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXBooleanLiteralRule());
+                      						}
+                      						setWithLastConsumed(current, "isTrue", true, "true");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXBooleanLiteral"
+
+
+    // $ANTLR start "entryRuleXNullLiteral"
+    // InternalActionDSL.g:6673:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
+    public final EObject entryRuleXNullLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXNullLiteral = null;
+
+
+        try {
+            // InternalActionDSL.g:6673:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
+            // InternalActionDSL.g:6674:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXNullLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXNullLiteral=ruleXNullLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXNullLiteral; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXNullLiteral"
+
+
+    // $ANTLR start "ruleXNullLiteral"
+    // InternalActionDSL.g:6680:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
+    public final EObject ruleXNullLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6686:2: ( ( () otherlv_1= 'null' ) )
+            // InternalActionDSL.g:6687:2: ( () otherlv_1= 'null' )
+            {
+            // InternalActionDSL.g:6687:2: ( () otherlv_1= 'null' )
+            // InternalActionDSL.g:6688:3: () otherlv_1= 'null'
+            {
+            // InternalActionDSL.g:6688:3: ()
+            // InternalActionDSL.g:6689:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,104,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXNullLiteral"
+
+
+    // $ANTLR start "entryRuleXNumberLiteral"
+    // InternalActionDSL.g:6703:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
+    public final EObject entryRuleXNumberLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXNumberLiteral = null;
+
+
+        try {
+            // InternalActionDSL.g:6703:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
+            // InternalActionDSL.g:6704:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXNumberLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXNumberLiteral=ruleXNumberLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXNumberLiteral; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXNumberLiteral"
+
+
+    // $ANTLR start "ruleXNumberLiteral"
+    // InternalActionDSL.g:6710:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
+    public final EObject ruleXNumberLiteral() throws RecognitionException {
+        EObject current = null;
+
+        AntlrDatatypeRuleToken lv_value_1_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6716:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
+            // InternalActionDSL.g:6717:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            {
+            // InternalActionDSL.g:6717:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalActionDSL.g:6718:3: () ( (lv_value_1_0= ruleNumber ) )
+            {
+            // InternalActionDSL.g:6718:3: ()
+            // InternalActionDSL.g:6719:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalActionDSL.g:6725:3: ( (lv_value_1_0= ruleNumber ) )
+            // InternalActionDSL.g:6726:4: (lv_value_1_0= ruleNumber )
+            {
+            // InternalActionDSL.g:6726:4: (lv_value_1_0= ruleNumber )
+            // InternalActionDSL.g:6727:5: lv_value_1_0= ruleNumber
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_value_1_0=ruleNumber();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
+              					}
+              					set(
+              						current,
+              						"value",
+              						lv_value_1_0,
+              						"org.eclipse.xtext.xbase.Xbase.Number");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXNumberLiteral"
+
+
+    // $ANTLR start "entryRuleXStringLiteral"
+    // InternalActionDSL.g:6748:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
+    public final EObject entryRuleXStringLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXStringLiteral = null;
+
+
+        try {
+            // InternalActionDSL.g:6748:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
+            // InternalActionDSL.g:6749:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXStringLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXStringLiteral=ruleXStringLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXStringLiteral; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXStringLiteral"
+
+
+    // $ANTLR start "ruleXStringLiteral"
+    // InternalActionDSL.g:6755:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
+    public final EObject ruleXStringLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_value_1_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6761:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
+            // InternalActionDSL.g:6762:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            {
+            // InternalActionDSL.g:6762:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalActionDSL.g:6763:3: () ( (lv_value_1_0= RULE_STRING ) )
+            {
+            // InternalActionDSL.g:6763:3: ()
+            // InternalActionDSL.g:6764:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalActionDSL.g:6770:3: ( (lv_value_1_0= RULE_STRING ) )
+            // InternalActionDSL.g:6771:4: (lv_value_1_0= RULE_STRING )
+            {
+            // InternalActionDSL.g:6771:4: (lv_value_1_0= RULE_STRING )
+            // InternalActionDSL.g:6772:5: lv_value_1_0= RULE_STRING
+            {
+            lv_value_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getXStringLiteralRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"value",
+              						lv_value_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.STRING");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXStringLiteral"
+
+
+    // $ANTLR start "entryRuleXTypeLiteral"
+    // InternalActionDSL.g:6792:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
+    public final EObject entryRuleXTypeLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXTypeLiteral = null;
+
+
+        try {
+            // InternalActionDSL.g:6792:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
+            // InternalActionDSL.g:6793:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXTypeLiteralRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXTypeLiteral=ruleXTypeLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXTypeLiteral; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXTypeLiteral"
+
+
+    // $ANTLR start "ruleXTypeLiteral"
+    // InternalActionDSL.g:6799:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) ;
+    public final EObject ruleXTypeLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        AntlrDatatypeRuleToken lv_arrayDimensions_4_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6805:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
+            // InternalActionDSL.g:6806:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            {
+            // InternalActionDSL.g:6806:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalActionDSL.g:6807:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
+            {
+            // InternalActionDSL.g:6807:3: ()
+            // InternalActionDSL.g:6808:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,105,FOLLOW_79); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,47,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalActionDSL.g:6822:3: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:6823:4: ( ruleQualifiedName )
+            {
+            // InternalActionDSL.g:6823:4: ( ruleQualifiedName )
+            // InternalActionDSL.g:6824:5: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getXTypeLiteralRule());
+              					}
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0());
+              				
+            }
+            pushFollow(FOLLOW_99);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:6838:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
+            loop115:
+            do {
+                int alt115=2;
+                int LA115_0 = input.LA(1);
+
+                if ( (LA115_0==52) ) {
+                    alt115=1;
+                }
+
+
+                switch (alt115) {
+            	case 1 :
+            	    // InternalActionDSL.g:6839:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    {
+            	    // InternalActionDSL.g:6839:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalActionDSL.g:6840:5: lv_arrayDimensions_4_0= ruleArrayBrackets
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_99);
+            	    lv_arrayDimensions_4_0=ruleArrayBrackets();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"arrayDimensions",
+            	      						lv_arrayDimensions_4_0,
+            	      						"org.eclipse.xtext.xbase.Xtype.ArrayBrackets");
+            	      					afterParserOrEnumRuleCall();
+            	      				
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop115;
+                }
+            } while (true);
+
+            otherlv_5=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXTypeLiteral"
+
+
+    // $ANTLR start "entryRuleXThrowExpression"
+    // InternalActionDSL.g:6865:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
+    public final EObject entryRuleXThrowExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXThrowExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:6865:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
+            // InternalActionDSL.g:6866:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXThrowExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXThrowExpression=ruleXThrowExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXThrowExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXThrowExpression"
+
+
+    // $ANTLR start "ruleXThrowExpression"
+    // InternalActionDSL.g:6872:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
+    public final EObject ruleXThrowExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        EObject lv_expression_2_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6878:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
+            // InternalActionDSL.g:6879:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            {
+            // InternalActionDSL.g:6879:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalActionDSL.g:6880:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
+            {
+            // InternalActionDSL.g:6880:3: ()
+            // InternalActionDSL.g:6881:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,106,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:6891:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalActionDSL.g:6892:4: (lv_expression_2_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:6892:4: (lv_expression_2_0= ruleXExpression )
+            // InternalActionDSL.g:6893:5: lv_expression_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_expression_2_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
+              					}
+              					set(
+              						current,
+              						"expression",
+              						lv_expression_2_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXThrowExpression"
+
+
+    // $ANTLR start "entryRuleXReturnExpression"
+    // InternalActionDSL.g:6914:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
+    public final EObject entryRuleXReturnExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXReturnExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:6914:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
+            // InternalActionDSL.g:6915:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXReturnExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXReturnExpression=ruleXReturnExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXReturnExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXReturnExpression"
+
+
+    // $ANTLR start "ruleXReturnExpression"
+    // InternalActionDSL.g:6921:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
+    public final EObject ruleXReturnExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        EObject lv_expression_2_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6927:2: ( ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) )
+            // InternalActionDSL.g:6928:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
+            {
+            // InternalActionDSL.g:6928:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
+            // InternalActionDSL.g:6929:3: () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
+            {
+            // InternalActionDSL.g:6929:3: ()
+            // InternalActionDSL.g:6930:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,107,FOLLOW_100); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:6940:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
+            int alt116=2;
+            alt116 = dfa116.predict(input);
+            switch (alt116) {
+                case 1 :
+                    // InternalActionDSL.g:6941:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:6942:4: (lv_expression_2_0= ruleXExpression )
+                    // InternalActionDSL.g:6943:5: lv_expression_2_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_expression_2_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
+                      					}
+                      					set(
+                      						current,
+                      						"expression",
+                      						lv_expression_2_0,
+                      						"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXReturnExpression"
+
+
+    // $ANTLR start "entryRuleXTryCatchFinallyExpression"
+    // InternalActionDSL.g:6964:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
+    public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXTryCatchFinallyExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:6964:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
+            // InternalActionDSL.g:6965:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXTryCatchFinallyExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXTryCatchFinallyExpression"
+
+
+    // $ANTLR start "ruleXTryCatchFinallyExpression"
+    // InternalActionDSL.g:6971:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
+    public final EObject ruleXTryCatchFinallyExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_expression_2_0 = null;
+
+        EObject lv_catchClauses_3_0 = null;
+
+        EObject lv_finallyExpression_5_0 = null;
+
+        EObject lv_finallyExpression_7_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:6977:2: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
+            // InternalActionDSL.g:6978:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
+            {
+            // InternalActionDSL.g:6978:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
+            // InternalActionDSL.g:6979:3: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
+            {
+            // InternalActionDSL.g:6979:3: ()
+            // InternalActionDSL.g:6980:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,108,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:6990:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalActionDSL.g:6991:4: (lv_expression_2_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:6991:4: (lv_expression_2_0= ruleXExpression )
+            // InternalActionDSL.g:6992:5: lv_expression_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_101);
+            lv_expression_2_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+              					}
+              					set(
+              						current,
+              						"expression",
+              						lv_expression_2_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:7009:3: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
+            int alt119=2;
+            int LA119_0 = input.LA(1);
+
+            if ( (LA119_0==111) ) {
+                alt119=1;
+            }
+            else if ( (LA119_0==109) ) {
+                alt119=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 119, 0, input);
+
+                throw nvae;
+            }
+            switch (alt119) {
+                case 1 :
+                    // InternalActionDSL.g:7010:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    {
+                    // InternalActionDSL.g:7010:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalActionDSL.g:7011:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    {
+                    // InternalActionDSL.g:7011:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
+                    int cnt117=0;
+                    loop117:
+                    do {
+                        int alt117=2;
+                        int LA117_0 = input.LA(1);
+
+                        if ( (LA117_0==111) ) {
+                            int LA117_2 = input.LA(2);
+
+                            if ( (synpred44_InternalActionDSL()) ) {
+                                alt117=1;
+                            }
+
+
+                        }
+
+
+                        switch (alt117) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:7012:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    {
+                    	    // InternalActionDSL.g:7013:6: (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalActionDSL.g:7014:7: lv_catchClauses_3_0= ruleXCatchClause
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_102);
+                    	    lv_catchClauses_3_0=ruleXCatchClause();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"catchClauses",
+                    	      								lv_catchClauses_3_0,
+                    	      								"org.eclipse.xtext.xbase.Xbase.XCatchClause");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt117 >= 1 ) break loop117;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(117, input);
+                                throw eee;
+                        }
+                        cnt117++;
+                    } while (true);
+
+                    // InternalActionDSL.g:7031:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    int alt118=2;
+                    int LA118_0 = input.LA(1);
+
+                    if ( (LA118_0==109) ) {
+                        int LA118_1 = input.LA(2);
+
+                        if ( (synpred45_InternalActionDSL()) ) {
+                            alt118=1;
+                        }
+                    }
+                    switch (alt118) {
+                        case 1 :
+                            // InternalActionDSL.g:7032:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            {
+                            // InternalActionDSL.g:7032:6: ( ( 'finally' )=>otherlv_4= 'finally' )
+                            // InternalActionDSL.g:7033:7: ( 'finally' )=>otherlv_4= 'finally'
+                            {
+                            otherlv_4=(Token)match(input,109,FOLLOW_41); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+                              						
+                            }
+
+                            }
+
+                            // InternalActionDSL.g:7039:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalActionDSL.g:7040:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            {
+                            // InternalActionDSL.g:7040:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalActionDSL.g:7041:8: lv_finallyExpression_5_0= ruleXExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_2);
+                            lv_finallyExpression_5_0=ruleXExpression();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              								if (current==null) {
+                              									current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+                              								}
+                              								set(
+                              									current,
+                              									"finallyExpression",
+                              									lv_finallyExpression_5_0,
+                              									"org.eclipse.xtext.xbase.Xbase.XExpression");
+                              								afterParserOrEnumRuleCall();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:7061:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    {
+                    // InternalActionDSL.g:7061:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalActionDSL.g:7062:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    {
+                    otherlv_6=(Token)match(input,109,FOLLOW_41); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+                      				
+                    }
+                    // InternalActionDSL.g:7066:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalActionDSL.g:7067:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    {
+                    // InternalActionDSL.g:7067:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalActionDSL.g:7068:7: lv_finallyExpression_7_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_2);
+                    lv_finallyExpression_7_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+                      							}
+                      							set(
+                      								current,
+                      								"finallyExpression",
+                      								lv_finallyExpression_7_0,
+                      								"org.eclipse.xtext.xbase.Xbase.XExpression");
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXTryCatchFinallyExpression"
+
+
+    // $ANTLR start "entryRuleXSynchronizedExpression"
+    // InternalActionDSL.g:7091:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
+    public final EObject entryRuleXSynchronizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSynchronizedExpression = null;
+
+
+        try {
+            // InternalActionDSL.g:7091:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
+            // InternalActionDSL.g:7092:2: iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXSynchronizedExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXSynchronizedExpression"
+
+
+    // $ANTLR start "ruleXSynchronizedExpression"
+    // InternalActionDSL.g:7098:1: ruleXSynchronizedExpression returns [EObject current=null] : ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) ;
+    public final EObject ruleXSynchronizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        EObject lv_param_3_0 = null;
+
+        EObject lv_expression_5_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7104:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalActionDSL.g:7105:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            {
+            // InternalActionDSL.g:7105:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalActionDSL.g:7106:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
+            {
+            // InternalActionDSL.g:7106:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
+            // InternalActionDSL.g:7107:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            {
+            // InternalActionDSL.g:7114:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalActionDSL.g:7115:5: () otherlv_1= 'synchronized' otherlv_2= '('
+            {
+            // InternalActionDSL.g:7115:5: ()
+            // InternalActionDSL.g:7116:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,110,FOLLOW_79); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+              				
+            }
+            otherlv_2=(Token)match(input,47,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:7132:3: ( (lv_param_3_0= ruleXExpression ) )
+            // InternalActionDSL.g:7133:4: (lv_param_3_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:7133:4: (lv_param_3_0= ruleXExpression )
+            // InternalActionDSL.g:7134:5: lv_param_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_39);
+            lv_param_3_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+              					}
+              					set(
+              						current,
+              						"param",
+              						lv_param_3_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,49,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+              		
+            }
+            // InternalActionDSL.g:7155:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalActionDSL.g:7156:4: (lv_expression_5_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:7156:4: (lv_expression_5_0= ruleXExpression )
+            // InternalActionDSL.g:7157:5: lv_expression_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_expression_5_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+              					}
+              					set(
+              						current,
+              						"expression",
+              						lv_expression_5_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXSynchronizedExpression"
+
+
+    // $ANTLR start "entryRuleXCatchClause"
+    // InternalActionDSL.g:7178:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
+    public final EObject entryRuleXCatchClause() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCatchClause = null;
+
+
+        try {
+            // InternalActionDSL.g:7178:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
+            // InternalActionDSL.g:7179:2: iv_ruleXCatchClause= ruleXCatchClause EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXCatchClauseRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXCatchClause=ruleXCatchClause();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXCatchClause; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXCatchClause"
+
+
+    // $ANTLR start "ruleXCatchClause"
+    // InternalActionDSL.g:7185:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
+    public final EObject ruleXCatchClause() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        EObject lv_declaredParam_2_0 = null;
+
+        EObject lv_expression_4_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7191:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
+            // InternalActionDSL.g:7192:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            {
+            // InternalActionDSL.g:7192:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalActionDSL.g:7193:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
+            {
+            // InternalActionDSL.g:7193:3: ( ( 'catch' )=>otherlv_0= 'catch' )
+            // InternalActionDSL.g:7194:4: ( 'catch' )=>otherlv_0= 'catch'
+            {
+            otherlv_0=(Token)match(input,111,FOLLOW_79); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,47,FOLLOW_54); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:7204:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
+            // InternalActionDSL.g:7205:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            {
+            // InternalActionDSL.g:7205:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalActionDSL.g:7206:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_39);
+            lv_declaredParam_2_0=ruleFullJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+              					}
+              					set(
+              						current,
+              						"declaredParam",
+              						lv_declaredParam_2_0,
+              						"org.eclipse.xtext.xbase.Xbase.FullJvmFormalParameter");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,49,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+              		
+            }
+            // InternalActionDSL.g:7227:3: ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalActionDSL.g:7228:4: (lv_expression_4_0= ruleXExpression )
+            {
+            // InternalActionDSL.g:7228:4: (lv_expression_4_0= ruleXExpression )
+            // InternalActionDSL.g:7229:5: lv_expression_4_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_expression_4_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+              					}
+              					set(
+              						current,
+              						"expression",
+              						lv_expression_4_0,
+              						"org.eclipse.xtext.xbase.Xbase.XExpression");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXCatchClause"
+
+
+    // $ANTLR start "entryRuleQualifiedName"
+    // InternalActionDSL.g:7250:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+    public final String entryRuleQualifiedName() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;
+
+
+        try {
+            // InternalActionDSL.g:7250:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+            // InternalActionDSL.g:7251:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleQualifiedName=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleQualifiedName.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleQualifiedName"
+
+
+    // $ANTLR start "ruleQualifiedName"
+    // InternalActionDSL.g:7257:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
+    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        AntlrDatatypeRuleToken this_ValidID_0 = null;
+
+        AntlrDatatypeRuleToken this_ValidID_2 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7263:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
+            // InternalActionDSL.g:7264:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            {
+            // InternalActionDSL.g:7264:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalActionDSL.g:7265:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_103);
+            this_ValidID_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(this_ValidID_0);
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalActionDSL.g:7275:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            loop120:
+            do {
+                int alt120=2;
+                int LA120_0 = input.LA(1);
+
+                if ( (LA120_0==84) ) {
+                    int LA120_2 = input.LA(2);
+
+                    if ( (LA120_2==RULE_ID) ) {
+                        int LA120_3 = input.LA(3);
+
+                        if ( (synpred48_InternalActionDSL()) ) {
+                            alt120=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt120) {
+            	case 1 :
+            	    // InternalActionDSL.g:7276:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    {
+            	    // InternalActionDSL.g:7276:4: ( ( '.' )=>kw= '.' )
+            	    // InternalActionDSL.g:7277:5: ( '.' )=>kw= '.'
+            	    {
+            	    kw=(Token)match(input,84,FOLLOW_4); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      					current.merge(kw);
+            	      					newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0());
+            	      				
+            	    }
+
+            	    }
+
+            	    if ( state.backtracking==0 ) {
+
+            	      				newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1());
+            	      			
+            	    }
+            	    pushFollow(FOLLOW_103);
+            	    this_ValidID_2=ruleValidID();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      				current.merge(this_ValidID_2);
+            	      			
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      				afterParserOrEnumRuleCall();
+            	      			
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop120;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedName"
+
+
+    // $ANTLR start "entryRuleNumber"
+    // InternalActionDSL.g:7299:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
+    public final String entryRuleNumber() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleNumber = null;
+
+
+
+        	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+
+        try {
+            // InternalActionDSL.g:7301:2: (iv_ruleNumber= ruleNumber EOF )
+            // InternalActionDSL.g:7302:2: iv_ruleNumber= ruleNumber EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getNumberRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleNumber=ruleNumber();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleNumber.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+
+            	myHiddenTokenState.restore();
+
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleNumber"
+
+
+    // $ANTLR start "ruleNumber"
+    // InternalActionDSL.g:7311:1: ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) ;
+    public final AntlrDatatypeRuleToken ruleNumber() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_HEX_0=null;
+        Token this_INT_1=null;
+        Token this_DECIMAL_2=null;
+        Token kw=null;
+        Token this_INT_4=null;
+        Token this_DECIMAL_5=null;
+
+
+        	enterRule();
+        	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+
+        try {
+            // InternalActionDSL.g:7318:2: ( (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) )
+            // InternalActionDSL.g:7319:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
+            {
+            // InternalActionDSL.g:7319:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
+            int alt124=2;
+            int LA124_0 = input.LA(1);
+
+            if ( (LA124_0==RULE_HEX) ) {
+                alt124=1;
+            }
+            else if ( ((LA124_0>=RULE_INT && LA124_0<=RULE_DECIMAL)) ) {
+                alt124=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 124, 0, input);
+
+                throw nvae;
+            }
+            switch (alt124) {
+                case 1 :
+                    // InternalActionDSL.g:7320:3: this_HEX_0= RULE_HEX
+                    {
+                    this_HEX_0=(Token)match(input,RULE_HEX,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(this_HEX_0);
+                      		
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      			newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:7328:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    {
+                    // InternalActionDSL.g:7328:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalActionDSL.g:7329:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    {
+                    // InternalActionDSL.g:7329:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
+                    int alt121=2;
+                    int LA121_0 = input.LA(1);
+
+                    if ( (LA121_0==RULE_INT) ) {
+                        alt121=1;
+                    }
+                    else if ( (LA121_0==RULE_DECIMAL) ) {
+                        alt121=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 121, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt121) {
+                        case 1 :
+                            // InternalActionDSL.g:7330:5: this_INT_1= RULE_INT
+                            {
+                            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_103); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              					current.merge(this_INT_1);
+                              				
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              					newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0());
+                              				
+                            }
+
+                            }
+                            break;
+                        case 2 :
+                            // InternalActionDSL.g:7338:5: this_DECIMAL_2= RULE_DECIMAL
+                            {
+                            this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_103); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              					current.merge(this_DECIMAL_2);
+                              				
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              					newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1());
+                              				
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalActionDSL.g:7346:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    int alt123=2;
+                    int LA123_0 = input.LA(1);
+
+                    if ( (LA123_0==84) ) {
+                        int LA123_1 = input.LA(2);
+
+                        if ( ((LA123_1>=RULE_INT && LA123_1<=RULE_DECIMAL)) ) {
+                            alt123=1;
+                        }
+                    }
+                    switch (alt123) {
+                        case 1 :
+                            // InternalActionDSL.g:7347:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            {
+                            kw=(Token)match(input,84,FOLLOW_104); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
+                              				
+                            }
+                            // InternalActionDSL.g:7352:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            int alt122=2;
+                            int LA122_0 = input.LA(1);
+
+                            if ( (LA122_0==RULE_INT) ) {
+                                alt122=1;
+                            }
+                            else if ( (LA122_0==RULE_DECIMAL) ) {
+                                alt122=2;
+                            }
+                            else {
+                                if (state.backtracking>0) {state.failed=true; return current;}
+                                NoViableAltException nvae =
+                                    new NoViableAltException("", 122, 0, input);
+
+                                throw nvae;
+                            }
+                            switch (alt122) {
+                                case 1 :
+                                    // InternalActionDSL.g:7353:6: this_INT_4= RULE_INT
+                                    {
+                                    this_INT_4=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                      						current.merge(this_INT_4);
+                                      					
+                                    }
+                                    if ( state.backtracking==0 ) {
+
+                                      						newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0());
+                                      					
+                                    }
+
+                                    }
+                                    break;
+                                case 2 :
+                                    // InternalActionDSL.g:7361:6: this_DECIMAL_5= RULE_DECIMAL
+                                    {
+                                    this_DECIMAL_5=(Token)match(input,RULE_DECIMAL,FOLLOW_2); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                      						current.merge(this_DECIMAL_5);
+                                      					
+                                    }
+                                    if ( state.backtracking==0 ) {
+
+                                      						newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1());
+                                      					
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+
+            	myHiddenTokenState.restore();
+
+        }
+        return current;
+    }
+    // $ANTLR end "ruleNumber"
+
+
+    // $ANTLR start "entryRuleJvmTypeReference"
+    // InternalActionDSL.g:7378:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+    public final EObject entryRuleJvmTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmTypeReference = null;
+
+
+        try {
+            // InternalActionDSL.g:7378:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+            // InternalActionDSL.g:7379:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleJvmTypeReference=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleJvmTypeReference; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleJvmTypeReference"
+
+
+    // $ANTLR start "ruleJvmTypeReference"
+    // InternalActionDSL.g:7385:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
+    public final EObject ruleJvmTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_JvmParameterizedTypeReference_0 = null;
+
+        EObject this_XFunctionTypeRef_3 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7391:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+            // InternalActionDSL.g:7392:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            {
+            // InternalActionDSL.g:7392:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            int alt126=2;
+            int LA126_0 = input.LA(1);
+
+            if ( (LA126_0==RULE_ID) ) {
+                alt126=1;
+            }
+            else if ( (LA126_0==47||LA126_0==72) ) {
+                alt126=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 126, 0, input);
+
+                throw nvae;
+            }
+            switch (alt126) {
+                case 1 :
+                    // InternalActionDSL.g:7393:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    {
+                    // InternalActionDSL.g:7393:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalActionDSL.g:7394:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
+                      			
+                    }
+                    pushFollow(FOLLOW_97);
+                    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_JvmParameterizedTypeReference_0;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+                    // InternalActionDSL.g:7402:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    loop125:
+                    do {
+                        int alt125=2;
+                        int LA125_0 = input.LA(1);
+
+                        if ( (LA125_0==52) ) {
+                            int LA125_2 = input.LA(2);
+
+                            if ( (LA125_2==53) ) {
+                                int LA125_3 = input.LA(3);
+
+                                if ( (synpred49_InternalActionDSL()) ) {
+                                    alt125=1;
+                                }
+
+
+                            }
+
+
+                        }
+
+
+                        switch (alt125) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:7403:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+                    	    {
+                    	    // InternalActionDSL.g:7409:5: ( () ruleArrayBrackets )
+                    	    // InternalActionDSL.g:7410:6: () ruleArrayBrackets
+                    	    {
+                    	    // InternalActionDSL.g:7410:6: ()
+                    	    // InternalActionDSL.g:7411:7: 
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							current = forceCreateModelElementAndSet(
+                    	      								grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
+                    	      								current);
+                    	      						
+                    	    }
+
+                    	    }
+
+                    	    if ( state.backtracking==0 ) {
+
+                    	      						newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1());
+                    	      					
+                    	    }
+                    	    pushFollow(FOLLOW_97);
+                    	    ruleArrayBrackets();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop125;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:7428:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XFunctionTypeRef_3=ruleXFunctionTypeRef();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XFunctionTypeRef_3;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmTypeReference"
+
+
+    // $ANTLR start "entryRuleArrayBrackets"
+    // InternalActionDSL.g:7440:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+    public final String entryRuleArrayBrackets() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleArrayBrackets = null;
+
+
+        try {
+            // InternalActionDSL.g:7440:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+            // InternalActionDSL.g:7441:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getArrayBracketsRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleArrayBrackets=ruleArrayBrackets();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleArrayBrackets.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleArrayBrackets"
+
+
+    // $ANTLR start "ruleArrayBrackets"
+    // InternalActionDSL.g:7447:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+    public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7453:2: ( (kw= '[' kw= ']' ) )
+            // InternalActionDSL.g:7454:2: (kw= '[' kw= ']' )
+            {
+            // InternalActionDSL.g:7454:2: (kw= '[' kw= ']' )
+            // InternalActionDSL.g:7455:3: kw= '[' kw= ']'
+            {
+            kw=(Token)match(input,52,FOLLOW_76); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
+              		
+            }
+            kw=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleArrayBrackets"
+
+
+    // $ANTLR start "entryRuleXFunctionTypeRef"
+    // InternalActionDSL.g:7469:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+    public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXFunctionTypeRef = null;
+
+
+        try {
+            // InternalActionDSL.g:7469:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+            // InternalActionDSL.g:7470:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXFunctionTypeRef; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXFunctionTypeRef"
+
+
+    // $ANTLR start "ruleXFunctionTypeRef"
+    // InternalActionDSL.g:7476:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
+    public final EObject ruleXFunctionTypeRef() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        EObject lv_paramTypes_1_0 = null;
+
+        EObject lv_paramTypes_3_0 = null;
+
+        EObject lv_returnType_6_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7482:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
+            // InternalActionDSL.g:7483:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalActionDSL.g:7483:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalActionDSL.g:7484:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            {
+            // InternalActionDSL.g:7484:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+            int alt129=2;
+            int LA129_0 = input.LA(1);
+
+            if ( (LA129_0==47) ) {
+                alt129=1;
+            }
+            switch (alt129) {
+                case 1 :
+                    // InternalActionDSL.g:7485:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+                    {
+                    otherlv_0=(Token)match(input,47,FOLLOW_105); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+                      			
+                    }
+                    // InternalActionDSL.g:7489:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+                    int alt128=2;
+                    int LA128_0 = input.LA(1);
+
+                    if ( (LA128_0==RULE_ID||LA128_0==47||LA128_0==72) ) {
+                        alt128=1;
+                    }
+                    switch (alt128) {
+                        case 1 :
+                            // InternalActionDSL.g:7490:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            {
+                            // InternalActionDSL.g:7490:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+                            // InternalActionDSL.g:7491:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            {
+                            // InternalActionDSL.g:7491:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalActionDSL.g:7492:7: lv_paramTypes_1_0= ruleJvmTypeReference
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_38);
+                            lv_paramTypes_1_0=ruleJvmTypeReference();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							if (current==null) {
+                              								current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+                              							}
+                              							add(
+                              								current,
+                              								"paramTypes",
+                              								lv_paramTypes_1_0,
+                              								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+                              							afterParserOrEnumRuleCall();
+                              						
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalActionDSL.g:7509:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            loop127:
+                            do {
+                                int alt127=2;
+                                int LA127_0 = input.LA(1);
+
+                                if ( (LA127_0==48) ) {
+                                    alt127=1;
+                                }
+
+
+                                switch (alt127) {
+                            	case 1 :
+                            	    // InternalActionDSL.g:7510:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    {
+                            	    otherlv_2=(Token)match(input,48,FOLLOW_54); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+                            	      					
+                            	    }
+                            	    // InternalActionDSL.g:7514:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalActionDSL.g:7515:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    {
+                            	    // InternalActionDSL.g:7515:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalActionDSL.g:7516:8: lv_paramTypes_3_0= ruleJvmTypeReference
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
+                            	      							
+                            	    }
+                            	    pushFollow(FOLLOW_38);
+                            	    lv_paramTypes_3_0=ruleJvmTypeReference();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								if (current==null) {
+                            	      									current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+                            	      								}
+                            	      								add(
+                            	      									current,
+                            	      									"paramTypes",
+                            	      									lv_paramTypes_3_0,
+                            	      									"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+                            	      								afterParserOrEnumRuleCall();
+                            	      							
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop127;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_4=(Token)match(input,49,FOLLOW_106); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            otherlv_5=(Token)match(input,72,FOLLOW_54); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:7544:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalActionDSL.g:7545:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:7545:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalActionDSL.g:7546:5: lv_returnType_6_0= ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_returnType_6_0=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+              					}
+              					set(
+              						current,
+              						"returnType",
+              						lv_returnType_6_0,
+              						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXFunctionTypeRef"
+
+
+    // $ANTLR start "entryRuleJvmParameterizedTypeReference"
+    // InternalActionDSL.g:7567:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+    public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmParameterizedTypeReference = null;
+
+
+        try {
+            // InternalActionDSL.g:7567:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+            // InternalActionDSL.g:7568:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleJvmParameterizedTypeReference; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "ruleJvmParameterizedTypeReference"
+    // InternalActionDSL.g:7574:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
+    public final EObject ruleJvmParameterizedTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        EObject lv_arguments_2_0 = null;
+
+        EObject lv_arguments_4_0 = null;
+
+        EObject lv_arguments_10_0 = null;
+
+        EObject lv_arguments_12_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7580:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
+            // InternalActionDSL.g:7581:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+            {
+            // InternalActionDSL.g:7581:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+            // InternalActionDSL.g:7582:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+            {
+            // InternalActionDSL.g:7582:3: ( ( ruleQualifiedName ) )
+            // InternalActionDSL.g:7583:4: ( ruleQualifiedName )
+            {
+            // InternalActionDSL.g:7583:4: ( ruleQualifiedName )
+            // InternalActionDSL.g:7584:5: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+              					}
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0());
+              				
+            }
+            pushFollow(FOLLOW_107);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalActionDSL.g:7598:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+            int alt134=2;
+            alt134 = dfa134.predict(input);
+            switch (alt134) {
+                case 1 :
+                    // InternalActionDSL.g:7599:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    {
+                    // InternalActionDSL.g:7599:4: ( ( '<' )=>otherlv_1= '<' )
+                    // InternalActionDSL.g:7600:5: ( '<' )=>otherlv_1= '<'
+                    {
+                    otherlv_1=(Token)match(input,59,FOLLOW_66); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalActionDSL.g:7606:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalActionDSL.g:7607:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalActionDSL.g:7607:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalActionDSL.g:7608:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_67);
+                    lv_arguments_2_0=ruleJvmArgumentTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+                      						}
+                      						add(
+                      							current,
+                      							"arguments",
+                      							lv_arguments_2_0,
+                      							"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:7625:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop130:
+                    do {
+                        int alt130=2;
+                        int LA130_0 = input.LA(1);
+
+                        if ( (LA130_0==48) ) {
+                            alt130=1;
+                        }
+
+
+                        switch (alt130) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:7626:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_3=(Token)match(input,48,FOLLOW_66); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+                    	      				
+                    	    }
+                    	    // InternalActionDSL.g:7630:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalActionDSL.g:7631:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalActionDSL.g:7631:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalActionDSL.g:7632:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_67);
+                    	    lv_arguments_4_0=ruleJvmArgumentTypeReference();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"arguments",
+                    	      								lv_arguments_4_0,
+                    	      								"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop130;
+                        }
+                    } while (true);
+
+                    otherlv_5=(Token)match(input,60,FOLLOW_103); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+                      			
+                    }
+                    // InternalActionDSL.g:7654:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    loop133:
+                    do {
+                        int alt133=2;
+                        int LA133_0 = input.LA(1);
+
+                        if ( (LA133_0==84) ) {
+                            int LA133_2 = input.LA(2);
+
+                            if ( (LA133_2==RULE_ID) ) {
+                                int LA133_3 = input.LA(3);
+
+                                if ( (synpred51_InternalActionDSL()) ) {
+                                    alt133=1;
+                                }
+
+
+                            }
+
+
+                        }
+
+
+                        switch (alt133) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:7655:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    {
+                    	    // InternalActionDSL.g:7655:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+                    	    // InternalActionDSL.g:7656:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+                    	    {
+                    	    // InternalActionDSL.g:7662:6: ( () otherlv_7= '.' )
+                    	    // InternalActionDSL.g:7663:7: () otherlv_7= '.'
+                    	    {
+                    	    // InternalActionDSL.g:7663:7: ()
+                    	    // InternalActionDSL.g:7664:8: 
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      								current = forceCreateModelElementAndSet(
+                    	      									grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+                    	      									current);
+                    	      							
+                    	    }
+
+                    	    }
+
+                    	    otherlv_7=(Token)match(input,84,FOLLOW_4); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    // InternalActionDSL.g:7676:5: ( ( ruleValidID ) )
+                    	    // InternalActionDSL.g:7677:6: ( ruleValidID )
+                    	    {
+                    	    // InternalActionDSL.g:7677:6: ( ruleValidID )
+                    	    // InternalActionDSL.g:7678:7: ruleValidID
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+                    	      							}
+                    	      						
+                    	    }
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_108);
+                    	    ruleValidID();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    // InternalActionDSL.g:7692:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    int alt132=2;
+                    	    alt132 = dfa132.predict(input);
+                    	    switch (alt132) {
+                    	        case 1 :
+                    	            // InternalActionDSL.g:7693:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+                    	            {
+                    	            // InternalActionDSL.g:7693:6: ( ( '<' )=>otherlv_9= '<' )
+                    	            // InternalActionDSL.g:7694:7: ( '<' )=>otherlv_9= '<'
+                    	            {
+                    	            otherlv_9=(Token)match(input,59,FOLLOW_66); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+                    	              						
+                    	            }
+
+                    	            }
+
+                    	            // InternalActionDSL.g:7700:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+                    	            // InternalActionDSL.g:7701:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            {
+                    	            // InternalActionDSL.g:7701:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalActionDSL.g:7702:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+
+                    	              								newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
+                    	              							
+                    	            }
+                    	            pushFollow(FOLLOW_67);
+                    	            lv_arguments_10_0=ruleJvmArgumentTypeReference();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              								if (current==null) {
+                    	              									current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+                    	              								}
+                    	              								add(
+                    	              									current,
+                    	              									"arguments",
+                    	              									lv_arguments_10_0,
+                    	              									"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+                    	              								afterParserOrEnumRuleCall();
+                    	              							
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+                    	            // InternalActionDSL.g:7719:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+                    	            loop131:
+                    	            do {
+                    	                int alt131=2;
+                    	                int LA131_0 = input.LA(1);
+
+                    	                if ( (LA131_0==48) ) {
+                    	                    alt131=1;
+                    	                }
+
+
+                    	                switch (alt131) {
+                    	            	case 1 :
+                    	            	    // InternalActionDSL.g:7720:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    {
+                    	            	    otherlv_11=(Token)match(input,48,FOLLOW_66); if (state.failed) return current;
+                    	            	    if ( state.backtracking==0 ) {
+
+                    	            	      							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+                    	            	      						
+                    	            	    }
+                    	            	    // InternalActionDSL.g:7724:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalActionDSL.g:7725:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    {
+                    	            	    // InternalActionDSL.g:7725:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalActionDSL.g:7726:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+                    	            	    {
+                    	            	    if ( state.backtracking==0 ) {
+
+                    	            	      									newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
+                    	            	      								
+                    	            	    }
+                    	            	    pushFollow(FOLLOW_67);
+                    	            	    lv_arguments_12_0=ruleJvmArgumentTypeReference();
+
+                    	            	    state._fsp--;
+                    	            	    if (state.failed) return current;
+                    	            	    if ( state.backtracking==0 ) {
+
+                    	            	      									if (current==null) {
+                    	            	      										current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+                    	            	      									}
+                    	            	      									add(
+                    	            	      										current,
+                    	            	      										"arguments",
+                    	            	      										lv_arguments_12_0,
+                    	            	      										"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+                    	            	      									afterParserOrEnumRuleCall();
+                    	            	      								
+                    	            	    }
+
+                    	            	    }
+
+
+                    	            	    }
+
+
+                    	            	    }
+                    	            	    break;
+
+                    	            	default :
+                    	            	    break loop131;
+                    	                }
+                    	            } while (true);
+
+                    	            otherlv_13=(Token)match(input,60,FOLLOW_103); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+                    	              					
+                    	            }
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop133;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmArgumentTypeReference"
+    // InternalActionDSL.g:7755:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+    public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmArgumentTypeReference = null;
+
+
+        try {
+            // InternalActionDSL.g:7755:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+            // InternalActionDSL.g:7756:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleJvmArgumentTypeReference; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleJvmArgumentTypeReference"
+
+
+    // $ANTLR start "ruleJvmArgumentTypeReference"
+    // InternalActionDSL.g:7762:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
+    public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_JvmTypeReference_0 = null;
+
+        EObject this_JvmWildcardTypeReference_1 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7768:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+            // InternalActionDSL.g:7769:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            {
+            // InternalActionDSL.g:7769:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            int alt135=2;
+            int LA135_0 = input.LA(1);
+
+            if ( (LA135_0==RULE_ID||LA135_0==47||LA135_0==72) ) {
+                alt135=1;
+            }
+            else if ( (LA135_0==112) ) {
+                alt135=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 135, 0, input);
+
+                throw nvae;
+            }
+            switch (alt135) {
+                case 1 :
+                    // InternalActionDSL.g:7770:3: this_JvmTypeReference_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_JvmTypeReference_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_JvmTypeReference_0;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:7779:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_JvmWildcardTypeReference_1;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmArgumentTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmWildcardTypeReference"
+    // InternalActionDSL.g:7791:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+    public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmWildcardTypeReference = null;
+
+
+        try {
+            // InternalActionDSL.g:7791:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+            // InternalActionDSL.g:7792:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleJvmWildcardTypeReference; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "ruleJvmWildcardTypeReference"
+    // InternalActionDSL.g:7798:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
+    public final EObject ruleJvmWildcardTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        EObject lv_constraints_2_0 = null;
+
+        EObject lv_constraints_3_0 = null;
+
+        EObject lv_constraints_4_0 = null;
+
+        EObject lv_constraints_5_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7804:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
+            // InternalActionDSL.g:7805:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            {
+            // InternalActionDSL.g:7805:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalActionDSL.g:7806:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            {
+            // InternalActionDSL.g:7806:3: ()
+            // InternalActionDSL.g:7807:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,112,FOLLOW_109); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+              		
+            }
+            // InternalActionDSL.g:7817:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            int alt138=3;
+            int LA138_0 = input.LA(1);
+
+            if ( (LA138_0==99) ) {
+                alt138=1;
+            }
+            else if ( (LA138_0==100) ) {
+                alt138=2;
+            }
+            switch (alt138) {
+                case 1 :
+                    // InternalActionDSL.g:7818:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    {
+                    // InternalActionDSL.g:7818:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalActionDSL.g:7819:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    {
+                    // InternalActionDSL.g:7819:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+                    // InternalActionDSL.g:7820:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    {
+                    // InternalActionDSL.g:7820:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalActionDSL.g:7821:7: lv_constraints_2_0= ruleJvmUpperBound
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_110);
+                    lv_constraints_2_0=ruleJvmUpperBound();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+                      							}
+                      							add(
+                      								current,
+                      								"constraints",
+                      								lv_constraints_2_0,
+                      								"org.eclipse.xtext.xbase.Xtype.JvmUpperBound");
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:7838:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    loop136:
+                    do {
+                        int alt136=2;
+                        int LA136_0 = input.LA(1);
+
+                        if ( (LA136_0==113) ) {
+                            alt136=1;
+                        }
+
+
+                        switch (alt136) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:7839:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    {
+                    	    // InternalActionDSL.g:7839:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalActionDSL.g:7840:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_110);
+                    	    lv_constraints_3_0=ruleJvmUpperBoundAnded();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"constraints",
+                    	      								lv_constraints_3_0,
+                    	      								"org.eclipse.xtext.xbase.Xtype.JvmUpperBoundAnded");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop136;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:7859:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    {
+                    // InternalActionDSL.g:7859:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalActionDSL.g:7860:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    {
+                    // InternalActionDSL.g:7860:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+                    // InternalActionDSL.g:7861:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    {
+                    // InternalActionDSL.g:7861:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalActionDSL.g:7862:7: lv_constraints_4_0= ruleJvmLowerBound
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_110);
+                    lv_constraints_4_0=ruleJvmLowerBound();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+                      							}
+                      							add(
+                      								current,
+                      								"constraints",
+                      								lv_constraints_4_0,
+                      								"org.eclipse.xtext.xbase.Xtype.JvmLowerBound");
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalActionDSL.g:7879:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    loop137:
+                    do {
+                        int alt137=2;
+                        int LA137_0 = input.LA(1);
+
+                        if ( (LA137_0==113) ) {
+                            alt137=1;
+                        }
+
+
+                        switch (alt137) {
+                    	case 1 :
+                    	    // InternalActionDSL.g:7880:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    {
+                    	    // InternalActionDSL.g:7880:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalActionDSL.g:7881:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_110);
+                    	    lv_constraints_5_0=ruleJvmLowerBoundAnded();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							if (current==null) {
+                    	      								current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+                    	      							}
+                    	      							add(
+                    	      								current,
+                    	      								"constraints",
+                    	      								lv_constraints_5_0,
+                    	      								"org.eclipse.xtext.xbase.Xtype.JvmLowerBoundAnded");
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop137;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmUpperBound"
+    // InternalActionDSL.g:7904:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+    public final EObject entryRuleJvmUpperBound() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmUpperBound = null;
+
+
+        try {
+            // InternalActionDSL.g:7904:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+            // InternalActionDSL.g:7905:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getJvmUpperBoundRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleJvmUpperBound=ruleJvmUpperBound();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleJvmUpperBound; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleJvmUpperBound"
+
+
+    // $ANTLR start "ruleJvmUpperBound"
+    // InternalActionDSL.g:7911:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    public final EObject ruleJvmUpperBound() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        EObject lv_typeReference_1_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7917:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalActionDSL.g:7918:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalActionDSL.g:7918:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalActionDSL.g:7919:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,99,FOLLOW_54); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+              		
+            }
+            // InternalActionDSL.g:7923:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalActionDSL.g:7924:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:7924:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalActionDSL.g:7925:5: lv_typeReference_1_0= ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_typeReference_1_0=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
+              					}
+              					set(
+              						current,
+              						"typeReference",
+              						lv_typeReference_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmUpperBound"
+
+
+    // $ANTLR start "entryRuleJvmUpperBoundAnded"
+    // InternalActionDSL.g:7946:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+    public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmUpperBoundAnded = null;
+
+
+        try {
+            // InternalActionDSL.g:7946:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+            // InternalActionDSL.g:7947:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleJvmUpperBoundAnded; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleJvmUpperBoundAnded"
+
+
+    // $ANTLR start "ruleJvmUpperBoundAnded"
+    // InternalActionDSL.g:7953:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        EObject lv_typeReference_1_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:7959:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalActionDSL.g:7960:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalActionDSL.g:7960:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalActionDSL.g:7961:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,113,FOLLOW_54); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+              		
+            }
+            // InternalActionDSL.g:7965:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalActionDSL.g:7966:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:7966:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalActionDSL.g:7967:5: lv_typeReference_1_0= ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_typeReference_1_0=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
+              					}
+              					set(
+              						current,
+              						"typeReference",
+              						lv_typeReference_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmUpperBoundAnded"
+
+
+    // $ANTLR start "entryRuleJvmLowerBound"
+    // InternalActionDSL.g:7988:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+    public final EObject entryRuleJvmLowerBound() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmLowerBound = null;
+
+
+        try {
+            // InternalActionDSL.g:7988:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+            // InternalActionDSL.g:7989:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getJvmLowerBoundRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleJvmLowerBound=ruleJvmLowerBound();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleJvmLowerBound; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleJvmLowerBound"
+
+
+    // $ANTLR start "ruleJvmLowerBound"
+    // InternalActionDSL.g:7995:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    public final EObject ruleJvmLowerBound() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        EObject lv_typeReference_1_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8001:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalActionDSL.g:8002:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalActionDSL.g:8002:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalActionDSL.g:8003:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,100,FOLLOW_54); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+              		
+            }
+            // InternalActionDSL.g:8007:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalActionDSL.g:8008:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:8008:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalActionDSL.g:8009:5: lv_typeReference_1_0= ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_typeReference_1_0=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
+              					}
+              					set(
+              						current,
+              						"typeReference",
+              						lv_typeReference_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmLowerBound"
+
+
+    // $ANTLR start "entryRuleJvmLowerBoundAnded"
+    // InternalActionDSL.g:8030:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+    public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmLowerBoundAnded = null;
+
+
+        try {
+            // InternalActionDSL.g:8030:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+            // InternalActionDSL.g:8031:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleJvmLowerBoundAnded; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleJvmLowerBoundAnded"
+
+
+    // $ANTLR start "ruleJvmLowerBoundAnded"
+    // InternalActionDSL.g:8037:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    public final EObject ruleJvmLowerBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        EObject lv_typeReference_1_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8043:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalActionDSL.g:8044:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalActionDSL.g:8044:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalActionDSL.g:8045:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,113,FOLLOW_54); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+              		
+            }
+            // InternalActionDSL.g:8049:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalActionDSL.g:8050:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalActionDSL.g:8050:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalActionDSL.g:8051:5: lv_typeReference_1_0= ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_typeReference_1_0=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getJvmLowerBoundAndedRule());
+              					}
+              					set(
+              						current,
+              						"typeReference",
+              						lv_typeReference_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmLowerBoundAnded"
+
+
+    // $ANTLR start "entryRuleQualifiedNameWithWildcard"
+    // InternalActionDSL.g:8072:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+    public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;
+
+
+        try {
+            // InternalActionDSL.g:8072:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+            // InternalActionDSL.g:8073:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleQualifiedNameWithWildcard.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleQualifiedNameWithWildcard"
+
+
+    // $ANTLR start "ruleQualifiedNameWithWildcard"
+    // InternalActionDSL.g:8079:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
+    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        AntlrDatatypeRuleToken this_QualifiedName_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8085:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+            // InternalActionDSL.g:8086:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            {
+            // InternalActionDSL.g:8086:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalActionDSL.g:8087:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_111);
+            this_QualifiedName_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(this_QualifiedName_0);
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            kw=(Token)match(input,84,FOLLOW_112); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
+              		
+            }
+            kw=(Token)match(input,43,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedNameWithWildcard"
+
+
+    // $ANTLR start "entryRuleValidID"
+    // InternalActionDSL.g:8111:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+    public final String entryRuleValidID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleValidID = null;
+
+
+        try {
+            // InternalActionDSL.g:8111:47: (iv_ruleValidID= ruleValidID EOF )
+            // InternalActionDSL.g:8112:2: iv_ruleValidID= ruleValidID EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getValidIDRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleValidID=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleValidID.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleValidID"
+
+
+    // $ANTLR start "ruleValidID"
+    // InternalActionDSL.g:8118:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_ID_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8124:2: (this_ID_0= RULE_ID )
+            // InternalActionDSL.g:8125:2: this_ID_0= RULE_ID
+            {
+            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_ID_0);
+              	
+            }
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall());
+              	
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleValidID"
+
+
+    // $ANTLR start "entryRuleXImportSection"
+    // InternalActionDSL.g:8135:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
+    public final EObject entryRuleXImportSection() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXImportSection = null;
+
+
+        try {
+            // InternalActionDSL.g:8135:55: (iv_ruleXImportSection= ruleXImportSection EOF )
+            // InternalActionDSL.g:8136:2: iv_ruleXImportSection= ruleXImportSection EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXImportSectionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXImportSection=ruleXImportSection();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXImportSection; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXImportSection"
+
+
+    // $ANTLR start "ruleXImportSection"
+    // InternalActionDSL.g:8142:1: ruleXImportSection returns [EObject current=null] : ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ ;
+    public final EObject ruleXImportSection() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_importDeclarations_0_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8148:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
+            // InternalActionDSL.g:8149:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            {
+            // InternalActionDSL.g:8149:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            int cnt139=0;
+            loop139:
+            do {
+                int alt139=2;
+                int LA139_0 = input.LA(1);
+
+                if ( (LA139_0==40) ) {
+                    alt139=1;
+                }
+
+
+                switch (alt139) {
+            	case 1 :
+            	    // InternalActionDSL.g:8150:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    {
+            	    // InternalActionDSL.g:8150:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalActionDSL.g:8151:4: lv_importDeclarations_0_0= ruleXImportDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      				newCompositeNode(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0());
+            	      			
+            	    }
+            	    pushFollow(FOLLOW_113);
+            	    lv_importDeclarations_0_0=ruleXImportDeclaration();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      				if (current==null) {
+            	      					current = createModelElementForParent(grammarAccess.getXImportSectionRule());
+            	      				}
+            	      				add(
+            	      					current,
+            	      					"importDeclarations",
+            	      					lv_importDeclarations_0_0,
+            	      					"org.eclipse.osbp.xtext.oxtype.OXtype.XImportDeclaration");
+            	      				afterParserOrEnumRuleCall();
+            	      			
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt139 >= 1 ) break loop139;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(139, input);
+                        throw eee;
+                }
+                cnt139++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXImportSection"
+
+
+    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+    // InternalActionDSL.g:8171:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+    public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedNameInStaticImport = null;
+
+
+        try {
+            // InternalActionDSL.g:8171:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+            // InternalActionDSL.g:8172:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleQualifiedNameInStaticImport.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleQualifiedNameInStaticImport"
+    // InternalActionDSL.g:8178:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
+    public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        AntlrDatatypeRuleToken this_ValidID_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8184:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+            // InternalActionDSL.g:8185:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            {
+            // InternalActionDSL.g:8185:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            int cnt140=0;
+            loop140:
+            do {
+                int alt140=2;
+                int LA140_0 = input.LA(1);
+
+                if ( (LA140_0==RULE_ID) ) {
+                    int LA140_2 = input.LA(2);
+
+                    if ( (LA140_2==84) ) {
+                        alt140=1;
+                    }
+
+
+                }
+
+
+                switch (alt140) {
+            	case 1 :
+            	    // InternalActionDSL.g:8186:3: this_ValidID_0= ruleValidID kw= '.'
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
+            	      		
+            	    }
+            	    pushFollow(FOLLOW_111);
+            	    this_ValidID_0=ruleValidID();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			current.merge(this_ValidID_0);
+            	      		
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      			afterParserOrEnumRuleCall();
+            	      		
+            	    }
+            	    kw=(Token)match(input,84,FOLLOW_114); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			current.merge(kw);
+            	      			newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
+            	      		
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt140 >= 1 ) break loop140;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(140, input);
+                        throw eee;
+                }
+                cnt140++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleTaskActionEnum"
+    // InternalActionDSL.g:8205:1: ruleTaskActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'Claim' ) | (enumLiteral_1= 'Start' ) | (enumLiteral_2= 'Stop' ) | (enumLiteral_3= 'Release' ) | (enumLiteral_4= 'Suspend' ) | (enumLiteral_5= 'Resume' ) | (enumLiteral_6= 'Skip' ) | (enumLiteral_7= 'Complete' ) | (enumLiteral_8= 'Delegate' ) | (enumLiteral_9= 'Forward' ) | (enumLiteral_10= 'Fail' ) | (enumLiteral_11= 'Register' ) | (enumLiteral_12= 'Remove' ) | (enumLiteral_13= 'Activate' ) | (enumLiteral_14= 'Exit' ) ) ;
+    public final Enumerator ruleTaskActionEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+        Token enumLiteral_2=null;
+        Token enumLiteral_3=null;
+        Token enumLiteral_4=null;
+        Token enumLiteral_5=null;
+        Token enumLiteral_6=null;
+        Token enumLiteral_7=null;
+        Token enumLiteral_8=null;
+        Token enumLiteral_9=null;
+        Token enumLiteral_10=null;
+        Token enumLiteral_11=null;
+        Token enumLiteral_12=null;
+        Token enumLiteral_13=null;
+        Token enumLiteral_14=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8211:2: ( ( (enumLiteral_0= 'Claim' ) | (enumLiteral_1= 'Start' ) | (enumLiteral_2= 'Stop' ) | (enumLiteral_3= 'Release' ) | (enumLiteral_4= 'Suspend' ) | (enumLiteral_5= 'Resume' ) | (enumLiteral_6= 'Skip' ) | (enumLiteral_7= 'Complete' ) | (enumLiteral_8= 'Delegate' ) | (enumLiteral_9= 'Forward' ) | (enumLiteral_10= 'Fail' ) | (enumLiteral_11= 'Register' ) | (enumLiteral_12= 'Remove' ) | (enumLiteral_13= 'Activate' ) | (enumLiteral_14= 'Exit' ) ) )
+            // InternalActionDSL.g:8212:2: ( (enumLiteral_0= 'Claim' ) | (enumLiteral_1= 'Start' ) | (enumLiteral_2= 'Stop' ) | (enumLiteral_3= 'Release' ) | (enumLiteral_4= 'Suspend' ) | (enumLiteral_5= 'Resume' ) | (enumLiteral_6= 'Skip' ) | (enumLiteral_7= 'Complete' ) | (enumLiteral_8= 'Delegate' ) | (enumLiteral_9= 'Forward' ) | (enumLiteral_10= 'Fail' ) | (enumLiteral_11= 'Register' ) | (enumLiteral_12= 'Remove' ) | (enumLiteral_13= 'Activate' ) | (enumLiteral_14= 'Exit' ) )
+            {
+            // InternalActionDSL.g:8212:2: ( (enumLiteral_0= 'Claim' ) | (enumLiteral_1= 'Start' ) | (enumLiteral_2= 'Stop' ) | (enumLiteral_3= 'Release' ) | (enumLiteral_4= 'Suspend' ) | (enumLiteral_5= 'Resume' ) | (enumLiteral_6= 'Skip' ) | (enumLiteral_7= 'Complete' ) | (enumLiteral_8= 'Delegate' ) | (enumLiteral_9= 'Forward' ) | (enumLiteral_10= 'Fail' ) | (enumLiteral_11= 'Register' ) | (enumLiteral_12= 'Remove' ) | (enumLiteral_13= 'Activate' ) | (enumLiteral_14= 'Exit' ) )
+            int alt141=15;
+            switch ( input.LA(1) ) {
+            case 114:
+                {
+                alt141=1;
+                }
+                break;
+            case 115:
+                {
+                alt141=2;
+                }
+                break;
+            case 116:
+                {
+                alt141=3;
+                }
+                break;
+            case 117:
+                {
+                alt141=4;
+                }
+                break;
+            case 118:
+                {
+                alt141=5;
+                }
+                break;
+            case 119:
+                {
+                alt141=6;
+                }
+                break;
+            case 120:
+                {
+                alt141=7;
+                }
+                break;
+            case 121:
+                {
+                alt141=8;
+                }
+                break;
+            case 122:
+                {
+                alt141=9;
+                }
+                break;
+            case 123:
+                {
+                alt141=10;
+                }
+                break;
+            case 124:
+                {
+                alt141=11;
+                }
+                break;
+            case 125:
+                {
+                alt141=12;
+                }
+                break;
+            case 126:
+                {
+                alt141=13;
+                }
+                break;
+            case 127:
+                {
+                alt141=14;
+                }
+                break;
+            case 128:
+                {
+                alt141=15;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 141, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt141) {
+                case 1 :
+                    // InternalActionDSL.g:8213:3: (enumLiteral_0= 'Claim' )
+                    {
+                    // InternalActionDSL.g:8213:3: (enumLiteral_0= 'Claim' )
+                    // InternalActionDSL.g:8214:4: enumLiteral_0= 'Claim'
+                    {
+                    enumLiteral_0=(Token)match(input,114,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_CLAIMEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:8221:3: (enumLiteral_1= 'Start' )
+                    {
+                    // InternalActionDSL.g:8221:3: (enumLiteral_1= 'Start' )
+                    // InternalActionDSL.g:8222:4: enumLiteral_1= 'Start'
+                    {
+                    enumLiteral_1=(Token)match(input,115,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STARTEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:8229:3: (enumLiteral_2= 'Stop' )
+                    {
+                    // InternalActionDSL.g:8229:3: (enumLiteral_2= 'Stop' )
+                    // InternalActionDSL.g:8230:4: enumLiteral_2= 'Stop'
+                    {
+                    enumLiteral_2=(Token)match(input,116,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_STOPEnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:8237:3: (enumLiteral_3= 'Release' )
+                    {
+                    // InternalActionDSL.g:8237:3: (enumLiteral_3= 'Release' )
+                    // InternalActionDSL.g:8238:4: enumLiteral_3= 'Release'
+                    {
+                    enumLiteral_3=(Token)match(input,117,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_3, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RELEASEEnumLiteralDeclaration_3());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalActionDSL.g:8245:3: (enumLiteral_4= 'Suspend' )
+                    {
+                    // InternalActionDSL.g:8245:3: (enumLiteral_4= 'Suspend' )
+                    // InternalActionDSL.g:8246:4: enumLiteral_4= 'Suspend'
+                    {
+                    enumLiteral_4=(Token)match(input,118,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_4, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalActionDSL.g:8253:3: (enumLiteral_5= 'Resume' )
+                    {
+                    // InternalActionDSL.g:8253:3: (enumLiteral_5= 'Resume' )
+                    // InternalActionDSL.g:8254:4: enumLiteral_5= 'Resume'
+                    {
+                    enumLiteral_5=(Token)match(input,119,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_5, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_RESUMEEnumLiteralDeclaration_5());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalActionDSL.g:8261:3: (enumLiteral_6= 'Skip' )
+                    {
+                    // InternalActionDSL.g:8261:3: (enumLiteral_6= 'Skip' )
+                    // InternalActionDSL.g:8262:4: enumLiteral_6= 'Skip'
+                    {
+                    enumLiteral_6=(Token)match(input,120,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_6, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_SKIPEnumLiteralDeclaration_6());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalActionDSL.g:8269:3: (enumLiteral_7= 'Complete' )
+                    {
+                    // InternalActionDSL.g:8269:3: (enumLiteral_7= 'Complete' )
+                    // InternalActionDSL.g:8270:4: enumLiteral_7= 'Complete'
+                    {
+                    enumLiteral_7=(Token)match(input,121,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_7, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalActionDSL.g:8277:3: (enumLiteral_8= 'Delegate' )
+                    {
+                    // InternalActionDSL.g:8277:3: (enumLiteral_8= 'Delegate' )
+                    // InternalActionDSL.g:8278:4: enumLiteral_8= 'Delegate'
+                    {
+                    enumLiteral_8=(Token)match(input,122,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_8, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // InternalActionDSL.g:8285:3: (enumLiteral_9= 'Forward' )
+                    {
+                    // InternalActionDSL.g:8285:3: (enumLiteral_9= 'Forward' )
+                    // InternalActionDSL.g:8286:4: enumLiteral_9= 'Forward'
+                    {
+                    enumLiteral_9=(Token)match(input,123,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_9, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FORWARDEnumLiteralDeclaration_9());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 11 :
+                    // InternalActionDSL.g:8293:3: (enumLiteral_10= 'Fail' )
+                    {
+                    // InternalActionDSL.g:8293:3: (enumLiteral_10= 'Fail' )
+                    // InternalActionDSL.g:8294:4: enumLiteral_10= 'Fail'
+                    {
+                    enumLiteral_10=(Token)match(input,124,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_10, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_FAILEnumLiteralDeclaration_10());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 12 :
+                    // InternalActionDSL.g:8301:3: (enumLiteral_11= 'Register' )
+                    {
+                    // InternalActionDSL.g:8301:3: (enumLiteral_11= 'Register' )
+                    // InternalActionDSL.g:8302:4: enumLiteral_11= 'Register'
+                    {
+                    enumLiteral_11=(Token)match(input,125,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_11, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REGISTEREnumLiteralDeclaration_11());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 13 :
+                    // InternalActionDSL.g:8309:3: (enumLiteral_12= 'Remove' )
+                    {
+                    // InternalActionDSL.g:8309:3: (enumLiteral_12= 'Remove' )
+                    // InternalActionDSL.g:8310:4: enumLiteral_12= 'Remove'
+                    {
+                    enumLiteral_12=(Token)match(input,126,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_12, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_REMOVEEnumLiteralDeclaration_12());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 14 :
+                    // InternalActionDSL.g:8317:3: (enumLiteral_13= 'Activate' )
+                    {
+                    // InternalActionDSL.g:8317:3: (enumLiteral_13= 'Activate' )
+                    // InternalActionDSL.g:8318:4: enumLiteral_13= 'Activate'
+                    {
+                    enumLiteral_13=(Token)match(input,127,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_13, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 15 :
+                    // InternalActionDSL.g:8325:3: (enumLiteral_14= 'Exit' )
+                    {
+                    // InternalActionDSL.g:8325:3: (enumLiteral_14= 'Exit' )
+                    // InternalActionDSL.g:8326:4: enumLiteral_14= 'Exit'
+                    {
+                    enumLiteral_14=(Token)match(input,128,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_14, grammarAccess.getTaskActionEnumAccess().getTASK_ACTION_EXITEnumLiteralDeclaration_14());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTaskActionEnum"
+
+
+    // $ANTLR start "ruleSelectWorkloadActionEnum"
+    // InternalActionDSL.g:8336:1: ruleSelectWorkloadActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'RemoveAll' ) | (enumLiteral_1= 'AddAll' ) ) ;
+    public final Enumerator ruleSelectWorkloadActionEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8342:2: ( ( (enumLiteral_0= 'RemoveAll' ) | (enumLiteral_1= 'AddAll' ) ) )
+            // InternalActionDSL.g:8343:2: ( (enumLiteral_0= 'RemoveAll' ) | (enumLiteral_1= 'AddAll' ) )
+            {
+            // InternalActionDSL.g:8343:2: ( (enumLiteral_0= 'RemoveAll' ) | (enumLiteral_1= 'AddAll' ) )
+            int alt142=2;
+            int LA142_0 = input.LA(1);
+
+            if ( (LA142_0==129) ) {
+                alt142=1;
+            }
+            else if ( (LA142_0==130) ) {
+                alt142=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 142, 0, input);
+
+                throw nvae;
+            }
+            switch (alt142) {
+                case 1 :
+                    // InternalActionDSL.g:8344:3: (enumLiteral_0= 'RemoveAll' )
+                    {
+                    // InternalActionDSL.g:8344:3: (enumLiteral_0= 'RemoveAll' )
+                    // InternalActionDSL.g:8345:4: enumLiteral_0= 'RemoveAll'
+                    {
+                    enumLiteral_0=(Token)match(input,129,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:8352:3: (enumLiteral_1= 'AddAll' )
+                    {
+                    // InternalActionDSL.g:8352:3: (enumLiteral_1= 'AddAll' )
+                    // InternalActionDSL.g:8353:4: enumLiteral_1= 'AddAll'
+                    {
+                    enumLiteral_1=(Token)match(input,130,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getSelectWorkloadActionEnumAccess().getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSelectWorkloadActionEnum"
+
+
+    // $ANTLR start "ruleDialogActionEnum"
+    // InternalActionDSL.g:8363:1: ruleDialogActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'New' ) | (enumLiteral_1= 'Save' ) | (enumLiteral_2= 'Delete' ) | (enumLiteral_3= 'Cancel' ) ) ;
+    public final Enumerator ruleDialogActionEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+        Token enumLiteral_2=null;
+        Token enumLiteral_3=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8369:2: ( ( (enumLiteral_0= 'New' ) | (enumLiteral_1= 'Save' ) | (enumLiteral_2= 'Delete' ) | (enumLiteral_3= 'Cancel' ) ) )
+            // InternalActionDSL.g:8370:2: ( (enumLiteral_0= 'New' ) | (enumLiteral_1= 'Save' ) | (enumLiteral_2= 'Delete' ) | (enumLiteral_3= 'Cancel' ) )
+            {
+            // InternalActionDSL.g:8370:2: ( (enumLiteral_0= 'New' ) | (enumLiteral_1= 'Save' ) | (enumLiteral_2= 'Delete' ) | (enumLiteral_3= 'Cancel' ) )
+            int alt143=4;
+            switch ( input.LA(1) ) {
+            case 131:
+                {
+                alt143=1;
+                }
+                break;
+            case 132:
+                {
+                alt143=2;
+                }
+                break;
+            case 133:
+                {
+                alt143=3;
+                }
+                break;
+            case 134:
+                {
+                alt143=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 143, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt143) {
+                case 1 :
+                    // InternalActionDSL.g:8371:3: (enumLiteral_0= 'New' )
+                    {
+                    // InternalActionDSL.g:8371:3: (enumLiteral_0= 'New' )
+                    // InternalActionDSL.g:8372:4: enumLiteral_0= 'New'
+                    {
+                    enumLiteral_0=(Token)match(input,131,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_NEWEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:8379:3: (enumLiteral_1= 'Save' )
+                    {
+                    // InternalActionDSL.g:8379:3: (enumLiteral_1= 'Save' )
+                    // InternalActionDSL.g:8380:4: enumLiteral_1= 'Save'
+                    {
+                    enumLiteral_1=(Token)match(input,132,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalActionDSL.g:8387:3: (enumLiteral_2= 'Delete' )
+                    {
+                    // InternalActionDSL.g:8387:3: (enumLiteral_2= 'Delete' )
+                    // InternalActionDSL.g:8388:4: enumLiteral_2= 'Delete'
+                    {
+                    enumLiteral_2=(Token)match(input,133,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalActionDSL.g:8395:3: (enumLiteral_3= 'Cancel' )
+                    {
+                    // InternalActionDSL.g:8395:3: (enumLiteral_3= 'Cancel' )
+                    // InternalActionDSL.g:8396:4: enumLiteral_3= 'Cancel'
+                    {
+                    enumLiteral_3=(Token)match(input,134,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_3, grammarAccess.getDialogActionEnumAccess().getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDialogActionEnum"
+
+
+    // $ANTLR start "ruleReportActionEnum"
+    // InternalActionDSL.g:8406:1: ruleReportActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'PrintOnServer' ) | (enumLiteral_1= 'Download' ) ) ;
+    public final Enumerator ruleReportActionEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8412:2: ( ( (enumLiteral_0= 'PrintOnServer' ) | (enumLiteral_1= 'Download' ) ) )
+            // InternalActionDSL.g:8413:2: ( (enumLiteral_0= 'PrintOnServer' ) | (enumLiteral_1= 'Download' ) )
+            {
+            // InternalActionDSL.g:8413:2: ( (enumLiteral_0= 'PrintOnServer' ) | (enumLiteral_1= 'Download' ) )
+            int alt144=2;
+            int LA144_0 = input.LA(1);
+
+            if ( (LA144_0==135) ) {
+                alt144=1;
+            }
+            else if ( (LA144_0==136) ) {
+                alt144=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 144, 0, input);
+
+                throw nvae;
+            }
+            switch (alt144) {
+                case 1 :
+                    // InternalActionDSL.g:8414:3: (enumLiteral_0= 'PrintOnServer' )
+                    {
+                    // InternalActionDSL.g:8414:3: (enumLiteral_0= 'PrintOnServer' )
+                    // InternalActionDSL.g:8415:4: enumLiteral_0= 'PrintOnServer'
+                    {
+                    enumLiteral_0=(Token)match(input,135,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:8422:3: (enumLiteral_1= 'Download' )
+                    {
+                    // InternalActionDSL.g:8422:3: (enumLiteral_1= 'Download' )
+                    // InternalActionDSL.g:8423:4: enumLiteral_1= 'Download'
+                    {
+                    enumLiteral_1=(Token)match(input,136,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getReportActionEnumAccess().getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleReportActionEnum"
+
+
+    // $ANTLR start "ruleChartActionEnum"
+    // InternalActionDSL.g:8433:1: ruleChartActionEnum returns [Enumerator current=null] : (enumLiteral_0= 'Download' ) ;
+    public final Enumerator ruleChartActionEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8439:2: ( (enumLiteral_0= 'Download' ) )
+            // InternalActionDSL.g:8440:2: (enumLiteral_0= 'Download' )
+            {
+            // InternalActionDSL.g:8440:2: (enumLiteral_0= 'Download' )
+            // InternalActionDSL.g:8441:3: enumLiteral_0= 'Download'
+            {
+            enumLiteral_0=(Token)match(input,136,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration().getEnumLiteral().getInstance();
+              			newLeafNode(enumLiteral_0, grammarAccess.getChartActionEnumAccess().getCHART_ACTION_DOWNLOADEnumLiteralDeclaration());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleChartActionEnum"
+
+
+    // $ANTLR start "ruleWorkflowActionEnum"
+    // InternalActionDSL.g:8450:1: ruleWorkflowActionEnum returns [Enumerator current=null] : (enumLiteral_0= 'Start' ) ;
+    public final Enumerator ruleWorkflowActionEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8456:2: ( (enumLiteral_0= 'Start' ) )
+            // InternalActionDSL.g:8457:2: (enumLiteral_0= 'Start' )
+            {
+            // InternalActionDSL.g:8457:2: (enumLiteral_0= 'Start' )
+            // InternalActionDSL.g:8458:3: enumLiteral_0= 'Start'
+            {
+            enumLiteral_0=(Token)match(input,115,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration().getEnumLiteral().getInstance();
+              			newLeafNode(enumLiteral_0, grammarAccess.getWorkflowActionEnumAccess().getWORKFLOW_ACTION_STARTEnumLiteralDeclaration());
+              		
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleWorkflowActionEnum"
+
+
+    // $ANTLR start "ruleDatainterchangeActionEnum"
+    // InternalActionDSL.g:8467:1: ruleDatainterchangeActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) ) ;
+    public final Enumerator ruleDatainterchangeActionEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8473:2: ( ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) ) )
+            // InternalActionDSL.g:8474:2: ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) )
+            {
+            // InternalActionDSL.g:8474:2: ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) )
+            int alt145=2;
+            int LA145_0 = input.LA(1);
+
+            if ( (LA145_0==137) ) {
+                alt145=1;
+            }
+            else if ( (LA145_0==138) ) {
+                alt145=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 145, 0, input);
+
+                throw nvae;
+            }
+            switch (alt145) {
+                case 1 :
+                    // InternalActionDSL.g:8475:3: (enumLiteral_0= 'Import' )
+                    {
+                    // InternalActionDSL.g:8475:3: (enumLiteral_0= 'Import' )
+                    // InternalActionDSL.g:8476:4: enumLiteral_0= 'Import'
+                    {
+                    enumLiteral_0=(Token)match(input,137,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:8483:3: (enumLiteral_1= 'Export' )
+                    {
+                    // InternalActionDSL.g:8483:3: (enumLiteral_1= 'Export' )
+                    // InternalActionDSL.g:8484:4: enumLiteral_1= 'Export'
+                    {
+                    enumLiteral_1=(Token)match(input,138,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getDatainterchangeActionEnumAccess().getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDatainterchangeActionEnum"
+
+
+    // $ANTLR start "ruleUIActionEnum"
+    // InternalActionDSL.g:8494:1: ruleUIActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'NextPart' ) | (enumLiteral_1= 'PreviousPart' ) ) ;
+    public final Enumerator ruleUIActionEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalActionDSL.g:8500:2: ( ( (enumLiteral_0= 'NextPart' ) | (enumLiteral_1= 'PreviousPart' ) ) )
+            // InternalActionDSL.g:8501:2: ( (enumLiteral_0= 'NextPart' ) | (enumLiteral_1= 'PreviousPart' ) )
+            {
+            // InternalActionDSL.g:8501:2: ( (enumLiteral_0= 'NextPart' ) | (enumLiteral_1= 'PreviousPart' ) )
+            int alt146=2;
+            int LA146_0 = input.LA(1);
+
+            if ( (LA146_0==139) ) {
+                alt146=1;
+            }
+            else if ( (LA146_0==140) ) {
+                alt146=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 146, 0, input);
+
+                throw nvae;
+            }
+            switch (alt146) {
+                case 1 :
+                    // InternalActionDSL.g:8502:3: (enumLiteral_0= 'NextPart' )
+                    {
+                    // InternalActionDSL.g:8502:3: (enumLiteral_0= 'NextPart' )
+                    // InternalActionDSL.g:8503:4: enumLiteral_0= 'NextPart'
+                    {
+                    enumLiteral_0=(Token)match(input,139,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getUIActionEnumAccess().getNEXT_PARTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getUIActionEnumAccess().getNEXT_PARTEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalActionDSL.g:8510:3: (enumLiteral_1= 'PreviousPart' )
+                    {
+                    // InternalActionDSL.g:8510:3: (enumLiteral_1= 'PreviousPart' )
+                    // InternalActionDSL.g:8511:4: enumLiteral_1= 'PreviousPart'
+                    {
+                    enumLiteral_1=(Token)match(input,140,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getUIActionEnumAccess().getPREVIOUS_PARTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getUIActionEnumAccess().getPREVIOUS_PARTEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleUIActionEnum"
+
+    // $ANTLR start synpred1_InternalActionDSL
+    public final void synpred1_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:1581:5: ( '(' )
+        // InternalActionDSL.g:1581:6: '('
+        {
+        match(input,47,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred1_InternalActionDSL
+
+    // $ANTLR start synpred2_InternalActionDSL
+    public final void synpred2_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:1590:7: ( ( ( ( ruleValidID ) ) '=' ) )
+        // InternalActionDSL.g:1590:8: ( ( ( ruleValidID ) ) '=' )
+        {
+        // InternalActionDSL.g:1590:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalActionDSL.g:1591:8: ( ( ruleValidID ) ) '='
+        {
+        // InternalActionDSL.g:1591:8: ( ( ruleValidID ) )
+        // InternalActionDSL.g:1592:9: ( ruleValidID )
+        {
+        // InternalActionDSL.g:1592:9: ( ruleValidID )
+        // InternalActionDSL.g:1593:10: ruleValidID
+        {
+        pushFollow(FOLLOW_40);
+        ruleValidID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,50,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred2_InternalActionDSL
+
+    // $ANTLR start synpred5_InternalActionDSL
+    public final void synpred5_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:1770:5: ( ( () '#' '[' ) )
+        // InternalActionDSL.g:1770:6: ( () '#' '[' )
+        {
+        // InternalActionDSL.g:1770:6: ( () '#' '[' )
+        // InternalActionDSL.g:1771:6: () '#' '['
+        {
+        // InternalActionDSL.g:1771:6: ()
+        // InternalActionDSL.g:1772:6: 
+        {
+        }
+
+        match(input,51,FOLLOW_42); if (state.failed) return ;
+        match(input,52,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred5_InternalActionDSL
+
+    // $ANTLR start synpred6_InternalActionDSL
+    public final void synpred6_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:1912:5: ( ( () '#' '[' ) )
+        // InternalActionDSL.g:1912:6: ( () '#' '[' )
+        {
+        // InternalActionDSL.g:1912:6: ( () '#' '[' )
+        // InternalActionDSL.g:1913:6: () '#' '['
+        {
+        // InternalActionDSL.g:1913:6: ()
+        // InternalActionDSL.g:1914:6: 
+        {
+        }
+
+        match(input,51,FOLLOW_42); if (state.failed) return ;
+        match(input,52,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred6_InternalActionDSL
+
+    // $ANTLR start synpred7_InternalActionDSL
+    public final void synpred7_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2140:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
+        // InternalActionDSL.g:2140:7: ( () ( ( ruleOpMultiAssign ) ) )
+        {
+        // InternalActionDSL.g:2140:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalActionDSL.g:2141:7: () ( ( ruleOpMultiAssign ) )
+        {
+        // InternalActionDSL.g:2141:7: ()
+        // InternalActionDSL.g:2142:7: 
+        {
+        }
+
+        // InternalActionDSL.g:2143:7: ( ( ruleOpMultiAssign ) )
+        // InternalActionDSL.g:2144:8: ( ruleOpMultiAssign )
+        {
+        // InternalActionDSL.g:2144:8: ( ruleOpMultiAssign )
+        // InternalActionDSL.g:2145:9: ruleOpMultiAssign
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpMultiAssign();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred7_InternalActionDSL
+
+    // $ANTLR start synpred8_InternalActionDSL
+    public final void synpred8_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2334:5: ( ( () ( ( ruleOpOr ) ) ) )
+        // InternalActionDSL.g:2334:6: ( () ( ( ruleOpOr ) ) )
+        {
+        // InternalActionDSL.g:2334:6: ( () ( ( ruleOpOr ) ) )
+        // InternalActionDSL.g:2335:6: () ( ( ruleOpOr ) )
+        {
+        // InternalActionDSL.g:2335:6: ()
+        // InternalActionDSL.g:2336:6: 
+        {
+        }
+
+        // InternalActionDSL.g:2337:6: ( ( ruleOpOr ) )
+        // InternalActionDSL.g:2338:7: ( ruleOpOr )
+        {
+        // InternalActionDSL.g:2338:7: ( ruleOpOr )
+        // InternalActionDSL.g:2339:8: ruleOpOr
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpOr();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred8_InternalActionDSL
+
+    // $ANTLR start synpred9_InternalActionDSL
+    public final void synpred9_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2441:5: ( ( () ( ( ruleOpAnd ) ) ) )
+        // InternalActionDSL.g:2441:6: ( () ( ( ruleOpAnd ) ) )
+        {
+        // InternalActionDSL.g:2441:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalActionDSL.g:2442:6: () ( ( ruleOpAnd ) )
+        {
+        // InternalActionDSL.g:2442:6: ()
+        // InternalActionDSL.g:2443:6: 
+        {
+        }
+
+        // InternalActionDSL.g:2444:6: ( ( ruleOpAnd ) )
+        // InternalActionDSL.g:2445:7: ( ruleOpAnd )
+        {
+        // InternalActionDSL.g:2445:7: ( ruleOpAnd )
+        // InternalActionDSL.g:2446:8: ruleOpAnd
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpAnd();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred9_InternalActionDSL
+
+    // $ANTLR start synpred10_InternalActionDSL
+    public final void synpred10_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2548:5: ( ( () ( ( ruleOpEquality ) ) ) )
+        // InternalActionDSL.g:2548:6: ( () ( ( ruleOpEquality ) ) )
+        {
+        // InternalActionDSL.g:2548:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalActionDSL.g:2549:6: () ( ( ruleOpEquality ) )
+        {
+        // InternalActionDSL.g:2549:6: ()
+        // InternalActionDSL.g:2550:6: 
+        {
+        }
+
+        // InternalActionDSL.g:2551:6: ( ( ruleOpEquality ) )
+        // InternalActionDSL.g:2552:7: ( ruleOpEquality )
+        {
+        // InternalActionDSL.g:2552:7: ( ruleOpEquality )
+        // InternalActionDSL.g:2553:8: ruleOpEquality
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpEquality();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred10_InternalActionDSL
+
+    // $ANTLR start synpred11_InternalActionDSL
+    public final void synpred11_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2676:6: ( ( () 'instanceof' ) )
+        // InternalActionDSL.g:2676:7: ( () 'instanceof' )
+        {
+        // InternalActionDSL.g:2676:7: ( () 'instanceof' )
+        // InternalActionDSL.g:2677:7: () 'instanceof'
+        {
+        // InternalActionDSL.g:2677:7: ()
+        // InternalActionDSL.g:2678:7: 
+        {
+        }
+
+        match(input,68,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred11_InternalActionDSL
+
+    // $ANTLR start synpred12_InternalActionDSL
+    public final void synpred12_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2719:6: ( ( () ( ( ruleOpCompare ) ) ) )
+        // InternalActionDSL.g:2719:7: ( () ( ( ruleOpCompare ) ) )
+        {
+        // InternalActionDSL.g:2719:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalActionDSL.g:2720:7: () ( ( ruleOpCompare ) )
+        {
+        // InternalActionDSL.g:2720:7: ()
+        // InternalActionDSL.g:2721:7: 
+        {
+        }
+
+        // InternalActionDSL.g:2722:7: ( ( ruleOpCompare ) )
+        // InternalActionDSL.g:2723:8: ( ruleOpCompare )
+        {
+        // InternalActionDSL.g:2723:8: ( ruleOpCompare )
+        // InternalActionDSL.g:2724:9: ruleOpCompare
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpCompare();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred12_InternalActionDSL
+
+    // $ANTLR start synpred13_InternalActionDSL
+    public final void synpred13_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2854:5: ( ( () ( ( ruleOpOther ) ) ) )
+        // InternalActionDSL.g:2854:6: ( () ( ( ruleOpOther ) ) )
+        {
+        // InternalActionDSL.g:2854:6: ( () ( ( ruleOpOther ) ) )
+        // InternalActionDSL.g:2855:6: () ( ( ruleOpOther ) )
+        {
+        // InternalActionDSL.g:2855:6: ()
+        // InternalActionDSL.g:2856:6: 
+        {
+        }
+
+        // InternalActionDSL.g:2857:6: ( ( ruleOpOther ) )
+        // InternalActionDSL.g:2858:7: ( ruleOpOther )
+        {
+        // InternalActionDSL.g:2858:7: ( ruleOpOther )
+        // InternalActionDSL.g:2859:8: ruleOpOther
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpOther();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred13_InternalActionDSL
+
+    // $ANTLR start synpred14_InternalActionDSL
+    public final void synpred14_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:2974:6: ( ( '>' '>' ) )
+        // InternalActionDSL.g:2974:7: ( '>' '>' )
+        {
+        // InternalActionDSL.g:2974:7: ( '>' '>' )
+        // InternalActionDSL.g:2975:7: '>' '>'
+        {
+        match(input,60,FOLLOW_57); if (state.failed) return ;
+        match(input,60,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred14_InternalActionDSL
+
+    // $ANTLR start synpred15_InternalActionDSL
+    public final void synpred15_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3009:6: ( ( '<' '<' ) )
+        // InternalActionDSL.g:3009:7: ( '<' '<' )
+        {
+        // InternalActionDSL.g:3009:7: ( '<' '<' )
+        // InternalActionDSL.g:3010:7: '<' '<'
+        {
+        match(input,59,FOLLOW_47); if (state.failed) return ;
+        match(input,59,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred15_InternalActionDSL
+
+    // $ANTLR start synpred16_InternalActionDSL
+    public final void synpred16_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3082:5: ( ( () ( ( ruleOpAdd ) ) ) )
+        // InternalActionDSL.g:3082:6: ( () ( ( ruleOpAdd ) ) )
+        {
+        // InternalActionDSL.g:3082:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalActionDSL.g:3083:6: () ( ( ruleOpAdd ) )
+        {
+        // InternalActionDSL.g:3083:6: ()
+        // InternalActionDSL.g:3084:6: 
+        {
+        }
+
+        // InternalActionDSL.g:3085:6: ( ( ruleOpAdd ) )
+        // InternalActionDSL.g:3086:7: ( ruleOpAdd )
+        {
+        // InternalActionDSL.g:3086:7: ( ruleOpAdd )
+        // InternalActionDSL.g:3087:8: ruleOpAdd
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpAdd();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred16_InternalActionDSL
+
+    // $ANTLR start synpred17_InternalActionDSL
+    public final void synpred17_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3197:5: ( ( () ( ( ruleOpMulti ) ) ) )
+        // InternalActionDSL.g:3197:6: ( () ( ( ruleOpMulti ) ) )
+        {
+        // InternalActionDSL.g:3197:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalActionDSL.g:3198:6: () ( ( ruleOpMulti ) )
+        {
+        // InternalActionDSL.g:3198:6: ()
+        // InternalActionDSL.g:3199:6: 
+        {
+        }
+
+        // InternalActionDSL.g:3200:6: ( ( ruleOpMulti ) )
+        // InternalActionDSL.g:3201:7: ( ruleOpMulti )
+        {
+        // InternalActionDSL.g:3201:7: ( ruleOpMulti )
+        // InternalActionDSL.g:3202:8: ruleOpMulti
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpMulti();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred17_InternalActionDSL
+
+    // $ANTLR start synpred18_InternalActionDSL
+    public final void synpred18_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3432:5: ( ( () 'as' ) )
+        // InternalActionDSL.g:3432:6: ( () 'as' )
+        {
+        // InternalActionDSL.g:3432:6: ( () 'as' )
+        // InternalActionDSL.g:3433:6: () 'as'
+        {
+        // InternalActionDSL.g:3433:6: ()
+        // InternalActionDSL.g:3434:6: 
+        {
+        }
+
+        match(input,81,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred18_InternalActionDSL
+
+    // $ANTLR start synpred19_InternalActionDSL
+    public final void synpred19_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3500:4: ( ( () ( ( ruleOpPostfix ) ) ) )
+        // InternalActionDSL.g:3500:5: ( () ( ( ruleOpPostfix ) ) )
+        {
+        // InternalActionDSL.g:3500:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalActionDSL.g:3501:5: () ( ( ruleOpPostfix ) )
+        {
+        // InternalActionDSL.g:3501:5: ()
+        // InternalActionDSL.g:3502:5: 
+        {
+        }
+
+        // InternalActionDSL.g:3503:5: ( ( ruleOpPostfix ) )
+        // InternalActionDSL.g:3504:6: ( ruleOpPostfix )
+        {
+        // InternalActionDSL.g:3504:6: ( ruleOpPostfix )
+        // InternalActionDSL.g:3505:7: ruleOpPostfix
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpPostfix();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred19_InternalActionDSL
+
+    // $ANTLR start synpred20_InternalActionDSL
+    public final void synpred20_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3596:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+        // InternalActionDSL.g:3596:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        {
+        // InternalActionDSL.g:3596:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalActionDSL.g:3597:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+        {
+        // InternalActionDSL.g:3597:7: ()
+        // InternalActionDSL.g:3598:7: 
+        {
+        }
+
+        // InternalActionDSL.g:3599:7: ( '.' | ( ( '::' ) ) )
+        int alt147=2;
+        int LA147_0 = input.LA(1);
+
+        if ( (LA147_0==84) ) {
+            alt147=1;
+        }
+        else if ( (LA147_0==85) ) {
+            alt147=2;
+        }
+        else {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 147, 0, input);
+
+            throw nvae;
+        }
+        switch (alt147) {
+            case 1 :
+                // InternalActionDSL.g:3600:8: '.'
+                {
+                match(input,84,FOLLOW_64); if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // InternalActionDSL.g:3602:8: ( ( '::' ) )
+                {
+                // InternalActionDSL.g:3602:8: ( ( '::' ) )
+                // InternalActionDSL.g:3603:9: ( '::' )
+                {
+                // InternalActionDSL.g:3603:9: ( '::' )
+                // InternalActionDSL.g:3604:10: '::'
+                {
+                match(input,85,FOLLOW_64); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+
+        }
+
+        // InternalActionDSL.g:3608:7: ( ( ruleFeatureCallID ) )
+        // InternalActionDSL.g:3609:8: ( ruleFeatureCallID )
+        {
+        // InternalActionDSL.g:3609:8: ( ruleFeatureCallID )
+        // InternalActionDSL.g:3610:9: ruleFeatureCallID
+        {
+        pushFollow(FOLLOW_40);
+        ruleFeatureCallID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        pushFollow(FOLLOW_2);
+        ruleOpSingleAssign();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred20_InternalActionDSL
+
+    // $ANTLR start synpred21_InternalActionDSL
+    public final void synpred21_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3693:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
+        // InternalActionDSL.g:3693:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        {
+        // InternalActionDSL.g:3693:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalActionDSL.g:3694:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        {
+        // InternalActionDSL.g:3694:7: ()
+        // InternalActionDSL.g:3695:7: 
+        {
+        }
+
+        // InternalActionDSL.g:3696:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        int alt148=3;
+        switch ( input.LA(1) ) {
+        case 84:
+            {
+            alt148=1;
+            }
+            break;
+        case 86:
+            {
+            alt148=2;
+            }
+            break;
+        case 85:
+            {
+            alt148=3;
+            }
+            break;
+        default:
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 148, 0, input);
+
+            throw nvae;
+        }
+
+        switch (alt148) {
+            case 1 :
+                // InternalActionDSL.g:3697:8: '.'
+                {
+                match(input,84,FOLLOW_2); if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // InternalActionDSL.g:3699:8: ( ( '?.' ) )
+                {
+                // InternalActionDSL.g:3699:8: ( ( '?.' ) )
+                // InternalActionDSL.g:3700:9: ( '?.' )
+                {
+                // InternalActionDSL.g:3700:9: ( '?.' )
+                // InternalActionDSL.g:3701:10: '?.'
+                {
+                match(input,86,FOLLOW_2); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+            case 3 :
+                // InternalActionDSL.g:3705:8: ( ( '::' ) )
+                {
+                // InternalActionDSL.g:3705:8: ( ( '::' ) )
+                // InternalActionDSL.g:3706:9: ( '::' )
+                {
+                // InternalActionDSL.g:3706:9: ( '::' )
+                // InternalActionDSL.g:3707:10: '::'
+                {
+                match(input,85,FOLLOW_2); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred21_InternalActionDSL
+
+    // $ANTLR start synpred22_InternalActionDSL
+    public final void synpred22_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3831:7: ( ( '(' ) )
+        // InternalActionDSL.g:3831:8: ( '(' )
+        {
+        // InternalActionDSL.g:3831:8: ( '(' )
+        // InternalActionDSL.g:3832:8: '('
+        {
+        match(input,47,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred22_InternalActionDSL
+
+    // $ANTLR start synpred23_InternalActionDSL
+    public final void synpred23_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3850:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalActionDSL.g:3850:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalActionDSL.g:3850:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalActionDSL.g:3851:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalActionDSL.g:3851:9: ()
+        // InternalActionDSL.g:3852:9: 
+        {
+        }
+
+        // InternalActionDSL.g:3853:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt150=2;
+        int LA150_0 = input.LA(1);
+
+        if ( (LA150_0==RULE_ID||LA150_0==47||LA150_0==72) ) {
+            alt150=1;
+        }
+        switch (alt150) {
+            case 1 :
+                // InternalActionDSL.g:3854:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalActionDSL.g:3854:10: ( ( ruleJvmFormalParameter ) )
+                // InternalActionDSL.g:3855:11: ( ruleJvmFormalParameter )
+                {
+                // InternalActionDSL.g:3855:11: ( ruleJvmFormalParameter )
+                // InternalActionDSL.g:3856:12: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_74);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalActionDSL.g:3859:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop149:
+                do {
+                    int alt149=2;
+                    int LA149_0 = input.LA(1);
+
+                    if ( (LA149_0==48) ) {
+                        alt149=1;
+                    }
+
+
+                    switch (alt149) {
+                	case 1 :
+                	    // InternalActionDSL.g:3860:11: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,48,FOLLOW_54); if (state.failed) return ;
+                	    // InternalActionDSL.g:3861:11: ( ( ruleJvmFormalParameter ) )
+                	    // InternalActionDSL.g:3862:12: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalActionDSL.g:3862:12: ( ruleJvmFormalParameter )
+                	    // InternalActionDSL.g:3863:13: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_74);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop149;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalActionDSL.g:3868:9: ( ( '|' ) )
+        // InternalActionDSL.g:3869:10: ( '|' )
+        {
+        // InternalActionDSL.g:3869:10: ( '|' )
+        // InternalActionDSL.g:3870:11: '|'
+        {
+        match(input,87,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred23_InternalActionDSL
+
+    // $ANTLR start synpred24_InternalActionDSL
+    public final void synpred24_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:3947:6: ( ( () '[' ) )
+        // InternalActionDSL.g:3947:7: ( () '[' )
+        {
+        // InternalActionDSL.g:3947:7: ( () '[' )
+        // InternalActionDSL.g:3948:7: () '['
+        {
+        // InternalActionDSL.g:3948:7: ()
+        // InternalActionDSL.g:3949:7: 
+        {
+        }
+
+        match(input,52,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred24_InternalActionDSL
+
+    // $ANTLR start synpred25_InternalActionDSL
+    public final void synpred25_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:4020:4: ( ( () 'synchronized' '(' ) )
+        // InternalActionDSL.g:4020:5: ( () 'synchronized' '(' )
+        {
+        // InternalActionDSL.g:4020:5: ( () 'synchronized' '(' )
+        // InternalActionDSL.g:4021:5: () 'synchronized' '('
+        {
+        // InternalActionDSL.g:4021:5: ()
+        // InternalActionDSL.g:4022:5: 
+        {
+        }
+
+        match(input,110,FOLLOW_79); if (state.failed) return ;
+        match(input,47,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred25_InternalActionDSL
+
+    // $ANTLR start synpred26_InternalActionDSL
+    public final void synpred26_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:4065:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalActionDSL.g:4065:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalActionDSL.g:4065:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalActionDSL.g:4066:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        // InternalActionDSL.g:4066:5: ()
+        // InternalActionDSL.g:4067:5: 
+        {
+        }
+
+        match(input,94,FOLLOW_79); if (state.failed) return ;
+        match(input,47,FOLLOW_54); if (state.failed) return ;
+        // InternalActionDSL.g:4070:5: ( ( ruleJvmFormalParameter ) )
+        // InternalActionDSL.g:4071:6: ( ruleJvmFormalParameter )
+        {
+        // InternalActionDSL.g:4071:6: ( ruleJvmFormalParameter )
+        // InternalActionDSL.g:4072:7: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_82);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,91,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred26_InternalActionDSL
+
+    // $ANTLR start synpred27_InternalActionDSL
+    public final void synpred27_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:4179:4: ( ( () '[' ) )
+        // InternalActionDSL.g:4179:5: ( () '[' )
+        {
+        // InternalActionDSL.g:4179:5: ( () '[' )
+        // InternalActionDSL.g:4180:5: () '['
+        {
+        // InternalActionDSL.g:4180:5: ()
+        // InternalActionDSL.g:4181:5: 
+        {
+        }
+
+        match(input,52,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred27_InternalActionDSL
+
+    // $ANTLR start synpred29_InternalActionDSL
+    public final void synpred29_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:4484:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalActionDSL.g:4484:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalActionDSL.g:4484:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalActionDSL.g:4485:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalActionDSL.g:4485:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt152=2;
+        int LA152_0 = input.LA(1);
+
+        if ( (LA152_0==RULE_ID||LA152_0==47||LA152_0==72) ) {
+            alt152=1;
+        }
+        switch (alt152) {
+            case 1 :
+                // InternalActionDSL.g:4486:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalActionDSL.g:4486:6: ( ( ruleJvmFormalParameter ) )
+                // InternalActionDSL.g:4487:7: ( ruleJvmFormalParameter )
+                {
+                // InternalActionDSL.g:4487:7: ( ruleJvmFormalParameter )
+                // InternalActionDSL.g:4488:8: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_74);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalActionDSL.g:4491:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop151:
+                do {
+                    int alt151=2;
+                    int LA151_0 = input.LA(1);
+
+                    if ( (LA151_0==48) ) {
+                        alt151=1;
+                    }
+
+
+                    switch (alt151) {
+                	case 1 :
+                	    // InternalActionDSL.g:4492:7: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,48,FOLLOW_54); if (state.failed) return ;
+                	    // InternalActionDSL.g:4493:7: ( ( ruleJvmFormalParameter ) )
+                	    // InternalActionDSL.g:4494:8: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalActionDSL.g:4494:8: ( ruleJvmFormalParameter )
+                	    // InternalActionDSL.g:4495:9: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_74);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop151;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalActionDSL.g:4500:5: ( ( '|' ) )
+        // InternalActionDSL.g:4501:6: ( '|' )
+        {
+        // InternalActionDSL.g:4501:6: ( '|' )
+        // InternalActionDSL.g:4502:7: '|'
+        {
+        match(input,87,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred29_InternalActionDSL
+
+    // $ANTLR start synpred31_InternalActionDSL
+    public final void synpred31_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:4893:5: ( 'else' )
+        // InternalActionDSL.g:4893:6: 'else'
+        {
+        match(input,89,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred31_InternalActionDSL
+
+    // $ANTLR start synpred32_InternalActionDSL
+    public final void synpred32_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:4952:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalActionDSL.g:4952:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalActionDSL.g:4952:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalActionDSL.g:4953:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        match(input,47,FOLLOW_54); if (state.failed) return ;
+        // InternalActionDSL.g:4954:7: ( ( ruleJvmFormalParameter ) )
+        // InternalActionDSL.g:4955:8: ( ruleJvmFormalParameter )
+        {
+        // InternalActionDSL.g:4955:8: ( ruleJvmFormalParameter )
+        // InternalActionDSL.g:4956:9: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_82);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,91,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred32_InternalActionDSL
+
+    // $ANTLR start synpred33_InternalActionDSL
+    public final void synpred33_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:5019:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalActionDSL.g:5019:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalActionDSL.g:5019:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalActionDSL.g:5020:7: ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        // InternalActionDSL.g:5020:7: ( ( ruleJvmFormalParameter ) )
+        // InternalActionDSL.g:5021:8: ( ruleJvmFormalParameter )
+        {
+        // InternalActionDSL.g:5021:8: ( ruleJvmFormalParameter )
+        // InternalActionDSL.g:5022:9: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_82);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,91,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred33_InternalActionDSL
+
+    // $ANTLR start synpred35_InternalActionDSL
+    public final void synpred35_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:5837:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
+        // InternalActionDSL.g:5837:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        {
+        // InternalActionDSL.g:5837:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalActionDSL.g:5838:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
+        {
+        // InternalActionDSL.g:5838:6: ( ( ruleJvmTypeReference ) )
+        // InternalActionDSL.g:5839:7: ( ruleJvmTypeReference )
+        {
+        // InternalActionDSL.g:5839:7: ( ruleJvmTypeReference )
+        // InternalActionDSL.g:5840:8: ruleJvmTypeReference
+        {
+        pushFollow(FOLLOW_4);
+        ruleJvmTypeReference();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        // InternalActionDSL.g:5843:6: ( ( ruleValidID ) )
+        // InternalActionDSL.g:5844:7: ( ruleValidID )
+        {
+        // InternalActionDSL.g:5844:7: ( ruleValidID )
+        // InternalActionDSL.g:5845:8: ruleValidID
+        {
+        pushFollow(FOLLOW_2);
+        ruleValidID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred35_InternalActionDSL
+
+    // $ANTLR start synpred36_InternalActionDSL
+    public final void synpred36_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:6149:5: ( ( '(' ) )
+        // InternalActionDSL.g:6149:6: ( '(' )
+        {
+        // InternalActionDSL.g:6149:6: ( '(' )
+        // InternalActionDSL.g:6150:6: '('
+        {
+        match(input,47,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred36_InternalActionDSL
+
+    // $ANTLR start synpred37_InternalActionDSL
+    public final void synpred37_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:6168:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalActionDSL.g:6168:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalActionDSL.g:6168:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalActionDSL.g:6169:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalActionDSL.g:6169:7: ()
+        // InternalActionDSL.g:6170:7: 
+        {
+        }
+
+        // InternalActionDSL.g:6171:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt156=2;
+        int LA156_0 = input.LA(1);
+
+        if ( (LA156_0==RULE_ID||LA156_0==47||LA156_0==72) ) {
+            alt156=1;
+        }
+        switch (alt156) {
+            case 1 :
+                // InternalActionDSL.g:6172:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalActionDSL.g:6172:8: ( ( ruleJvmFormalParameter ) )
+                // InternalActionDSL.g:6173:9: ( ruleJvmFormalParameter )
+                {
+                // InternalActionDSL.g:6173:9: ( ruleJvmFormalParameter )
+                // InternalActionDSL.g:6174:10: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_74);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalActionDSL.g:6177:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop155:
+                do {
+                    int alt155=2;
+                    int LA155_0 = input.LA(1);
+
+                    if ( (LA155_0==48) ) {
+                        alt155=1;
+                    }
+
+
+                    switch (alt155) {
+                	case 1 :
+                	    // InternalActionDSL.g:6178:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,48,FOLLOW_54); if (state.failed) return ;
+                	    // InternalActionDSL.g:6179:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalActionDSL.g:6180:10: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalActionDSL.g:6180:10: ( ruleJvmFormalParameter )
+                	    // InternalActionDSL.g:6181:11: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_74);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop155;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalActionDSL.g:6186:7: ( ( '|' ) )
+        // InternalActionDSL.g:6187:8: ( '|' )
+        {
+        // InternalActionDSL.g:6187:8: ( '|' )
+        // InternalActionDSL.g:6188:9: '|'
+        {
+        match(input,87,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred37_InternalActionDSL
+
+    // $ANTLR start synpred38_InternalActionDSL
+    public final void synpred38_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:6265:4: ( ( () '[' ) )
+        // InternalActionDSL.g:6265:5: ( () '[' )
+        {
+        // InternalActionDSL.g:6265:5: ( () '[' )
+        // InternalActionDSL.g:6266:5: () '['
+        {
+        // InternalActionDSL.g:6266:5: ()
+        // InternalActionDSL.g:6267:5: 
+        {
+        }
+
+        match(input,52,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred38_InternalActionDSL
+
+    // $ANTLR start synpred39_InternalActionDSL
+    public final void synpred39_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:6425:5: ( '<' )
+        // InternalActionDSL.g:6425:6: '<'
+        {
+        match(input,59,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred39_InternalActionDSL
+
+    // $ANTLR start synpred40_InternalActionDSL
+    public final void synpred40_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:6482:5: ( ( '(' ) )
+        // InternalActionDSL.g:6482:6: ( '(' )
+        {
+        // InternalActionDSL.g:6482:6: ( '(' )
+        // InternalActionDSL.g:6483:6: '('
+        {
+        match(input,47,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred40_InternalActionDSL
+
+    // $ANTLR start synpred41_InternalActionDSL
+    public final void synpred41_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:6501:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalActionDSL.g:6501:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalActionDSL.g:6501:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalActionDSL.g:6502:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalActionDSL.g:6502:7: ()
+        // InternalActionDSL.g:6503:7: 
+        {
+        }
+
+        // InternalActionDSL.g:6504:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt158=2;
+        int LA158_0 = input.LA(1);
+
+        if ( (LA158_0==RULE_ID||LA158_0==47||LA158_0==72) ) {
+            alt158=1;
+        }
+        switch (alt158) {
+            case 1 :
+                // InternalActionDSL.g:6505:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalActionDSL.g:6505:8: ( ( ruleJvmFormalParameter ) )
+                // InternalActionDSL.g:6506:9: ( ruleJvmFormalParameter )
+                {
+                // InternalActionDSL.g:6506:9: ( ruleJvmFormalParameter )
+                // InternalActionDSL.g:6507:10: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_74);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalActionDSL.g:6510:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop157:
+                do {
+                    int alt157=2;
+                    int LA157_0 = input.LA(1);
+
+                    if ( (LA157_0==48) ) {
+                        alt157=1;
+                    }
+
+
+                    switch (alt157) {
+                	case 1 :
+                	    // InternalActionDSL.g:6511:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,48,FOLLOW_54); if (state.failed) return ;
+                	    // InternalActionDSL.g:6512:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalActionDSL.g:6513:10: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalActionDSL.g:6513:10: ( ruleJvmFormalParameter )
+                	    // InternalActionDSL.g:6514:11: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_74);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop157;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalActionDSL.g:6519:7: ( ( '|' ) )
+        // InternalActionDSL.g:6520:8: ( '|' )
+        {
+        // InternalActionDSL.g:6520:8: ( '|' )
+        // InternalActionDSL.g:6521:9: '|'
+        {
+        match(input,87,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred41_InternalActionDSL
+
+    // $ANTLR start synpred42_InternalActionDSL
+    public final void synpred42_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:6598:4: ( ( () '[' ) )
+        // InternalActionDSL.g:6598:5: ( () '[' )
+        {
+        // InternalActionDSL.g:6598:5: ( () '[' )
+        // InternalActionDSL.g:6599:5: () '['
+        {
+        // InternalActionDSL.g:6599:5: ()
+        // InternalActionDSL.g:6600:5: 
+        {
+        }
+
+        match(input,52,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred42_InternalActionDSL
+
+    // $ANTLR start synpred43_InternalActionDSL
+    public final void synpred43_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:6941:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )
+        // InternalActionDSL.g:
+        {
+        if ( (input.LA(1)>=RULE_ID && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||(input.LA(1)>=40 && input.LA(1)<=42)||input.LA(1)==47||(input.LA(1)>=51 && input.LA(1)<=52)||input.LA(1)==59||(input.LA(1)>=75 && input.LA(1)<=76)||input.LA(1)==80||input.LA(1)==88||input.LA(1)==90||(input.LA(1)>=94 && input.LA(1)<=96)||(input.LA(1)>=99 && input.LA(1)<=108)||input.LA(1)==110 ) {
+            input.consume();
+            state.errorRecovery=false;state.failed=false;
+        }
+        else {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            MismatchedSetException mse = new MismatchedSetException(null,input);
+            throw mse;
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred43_InternalActionDSL
+
+    // $ANTLR start synpred44_InternalActionDSL
+    public final void synpred44_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:7012:6: ( 'catch' )
+        // InternalActionDSL.g:7012:7: 'catch'
+        {
+        match(input,111,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred44_InternalActionDSL
+
+    // $ANTLR start synpred45_InternalActionDSL
+    public final void synpred45_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:7033:7: ( 'finally' )
+        // InternalActionDSL.g:7033:8: 'finally'
+        {
+        match(input,109,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred45_InternalActionDSL
+
+    // $ANTLR start synpred48_InternalActionDSL
+    public final void synpred48_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:7277:5: ( '.' )
+        // InternalActionDSL.g:7277:6: '.'
+        {
+        match(input,84,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred48_InternalActionDSL
+
+    // $ANTLR start synpred49_InternalActionDSL
+    public final void synpred49_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:7403:5: ( ( () ruleArrayBrackets ) )
+        // InternalActionDSL.g:7403:6: ( () ruleArrayBrackets )
+        {
+        // InternalActionDSL.g:7403:6: ( () ruleArrayBrackets )
+        // InternalActionDSL.g:7404:6: () ruleArrayBrackets
+        {
+        // InternalActionDSL.g:7404:6: ()
+        // InternalActionDSL.g:7405:6: 
+        {
+        }
+
+        pushFollow(FOLLOW_2);
+        ruleArrayBrackets();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred49_InternalActionDSL
+
+    // $ANTLR start synpred50_InternalActionDSL
+    public final void synpred50_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:7600:5: ( '<' )
+        // InternalActionDSL.g:7600:6: '<'
+        {
+        match(input,59,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred50_InternalActionDSL
+
+    // $ANTLR start synpred51_InternalActionDSL
+    public final void synpred51_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:7656:6: ( ( () '.' ) )
+        // InternalActionDSL.g:7656:7: ( () '.' )
+        {
+        // InternalActionDSL.g:7656:7: ( () '.' )
+        // InternalActionDSL.g:7657:7: () '.'
+        {
+        // InternalActionDSL.g:7657:7: ()
+        // InternalActionDSL.g:7658:7: 
+        {
+        }
+
+        match(input,84,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred51_InternalActionDSL
+
+    // $ANTLR start synpred52_InternalActionDSL
+    public final void synpred52_InternalActionDSL_fragment() throws RecognitionException {   
+        // InternalActionDSL.g:7694:7: ( '<' )
+        // InternalActionDSL.g:7694:8: '<'
+        {
+        match(input,59,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred52_InternalActionDSL
+
+    // Delegated rules
+
+    public final boolean synpred39_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred39_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred26_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred26_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred8_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred8_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred29_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred29_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred49_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred49_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred33_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred33_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred20_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred20_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred10_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred10_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred19_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred19_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred36_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred36_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred43_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred43_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred2_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred2_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred5_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred5_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred13_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred13_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred16_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred16_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred23_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred23_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred40_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred11_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred11_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred24_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred24_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred14_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred14_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred31_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred31_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred21_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred21_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred17_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred17_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred41_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred41_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred9_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred9_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred6_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred6_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred51_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred51_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred44_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred44_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred27_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred27_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred37_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred37_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred32_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred32_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred42_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred42_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred22_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred22_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred52_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred52_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred45_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred45_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred35_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred35_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred38_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred38_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred48_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred48_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred50_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred50_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred7_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred15_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred15_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred18_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred18_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred25_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred25_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred12_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred12_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred1_InternalActionDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred1_InternalActionDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+    protected DFA20 dfa20 = new DFA20(this);
+    protected DFA23 dfa23 = new DFA23(this);
+    protected DFA29 dfa29 = new DFA29(this);
+    protected DFA32 dfa32 = new DFA32(this);
+    protected DFA34 dfa34 = new DFA34(this);
+    protected DFA44 dfa44 = new DFA44(this);
+    protected DFA47 dfa47 = new DFA47(this);
+    protected DFA63 dfa63 = new DFA63(this);
+    protected DFA62 dfa62 = new DFA62(this);
+    protected DFA64 dfa64 = new DFA64(this);
+    protected DFA66 dfa66 = new DFA66(this);
+    protected DFA75 dfa75 = new DFA75(this);
+    protected DFA82 dfa82 = new DFA82(this);
+    protected DFA81 dfa81 = new DFA81(this);
+    protected DFA104 dfa104 = new DFA104(this);
+    protected DFA103 dfa103 = new DFA103(this);
+    protected DFA105 dfa105 = new DFA105(this);
+    protected DFA109 dfa109 = new DFA109(this);
+    protected DFA112 dfa112 = new DFA112(this);
+    protected DFA111 dfa111 = new DFA111(this);
+    protected DFA113 dfa113 = new DFA113(this);
+    protected DFA116 dfa116 = new DFA116(this);
+    protected DFA134 dfa134 = new DFA134(this);
+    protected DFA132 dfa132 = new DFA132(this);
+    static final String dfa_1s = "\10\uffff";
+    static final String dfa_2s = "\2\uffff\1\5\3\uffff\1\5\1\uffff";
+    static final String dfa_3s = "\1\4\1\uffff\1\15\1\uffff\1\4\1\uffff\1\15\1\uffff";
+    static final String dfa_4s = "\1\54\1\uffff\1\124\1\uffff\1\53\1\uffff\1\124\1\uffff";
+    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\uffff\1\3";
+    static final String dfa_6s = "\10\uffff}>";
+    static final String[] dfa_7s = {
+            "\1\2\44\uffff\1\1\2\uffff\1\3",
+            "",
+            "\1\5\32\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
+            "",
+            "\1\6\46\uffff\1\7",
+            "",
+            "\1\5\32\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
+            ""
+    };
+
+    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
+    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
+    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
+    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
+    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
+    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
+    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
+
+    class DFA20 extends DFA {
+
+        public DFA20(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 20;
+            this.eot = dfa_1;
+            this.eof = dfa_2;
+            this.min = dfa_3;
+            this.max = dfa_4;
+            this.accept = dfa_5;
+            this.special = dfa_6;
+            this.transition = dfa_7;
+        }
+        public String getDescription() {
+            return "1370:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )";
+        }
+    }
+    static final String dfa_8s = "\44\uffff";
+    static final String dfa_9s = "\1\4\1\0\42\uffff";
+    static final String dfa_10s = "\1\156\1\0\42\uffff";
+    static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\3\1\1";
+    static final String dfa_12s = "\1\uffff\1\0\42\uffff}>";
+    static final String[] dfa_13s = {
+            "\1\1\4\2\5\uffff\1\2\31\uffff\3\2\3\uffff\2\2\1\uffff\1\42\1\uffff\2\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_8 = DFA.unpackEncodedString(dfa_8s);
+    static final char[] dfa_9 = DFA.unpackEncodedStringToUnsignedChars(dfa_9s);
+    static final char[] dfa_10 = DFA.unpackEncodedStringToUnsignedChars(dfa_10s);
+    static final short[] dfa_11 = DFA.unpackEncodedString(dfa_11s);
+    static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
+    static final short[][] dfa_13 = unpackEncodedStringArray(dfa_13s);
+
+    class DFA23 extends DFA {
+
+        public DFA23(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 23;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_13;
+        }
+        public String getDescription() {
+            return "1587:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA23_1 = input.LA(1);
+
+                         
+                        int index23_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred2_InternalActionDSL()) ) {s = 35;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index23_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 23, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_14s = "\43\uffff";
+    static final String dfa_15s = "\1\4\1\0\41\uffff";
+    static final String dfa_16s = "\1\156\1\0\41\uffff";
+    static final String dfa_17s = "\2\uffff\1\2\37\uffff\1\1";
+    static final String dfa_18s = "\1\uffff\1\0\41\uffff}>";
+    static final String[] dfa_19s = {
+            "\5\2\5\uffff\1\2\31\uffff\3\2\3\uffff\2\2\3\uffff\1\1\1\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_14 = DFA.unpackEncodedString(dfa_14s);
+    static final char[] dfa_15 = DFA.unpackEncodedStringToUnsignedChars(dfa_15s);
+    static final char[] dfa_16 = DFA.unpackEncodedStringToUnsignedChars(dfa_16s);
+    static final short[] dfa_17 = DFA.unpackEncodedString(dfa_17s);
+    static final short[] dfa_18 = DFA.unpackEncodedString(dfa_18s);
+    static final short[][] dfa_19 = unpackEncodedStringArray(dfa_19s);
+
+    class DFA29 extends DFA {
+
+        public DFA29(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 29;
+            this.eot = dfa_14;
+            this.eof = dfa_14;
+            this.min = dfa_15;
+            this.max = dfa_16;
+            this.accept = dfa_17;
+            this.special = dfa_18;
+            this.transition = dfa_19;
+        }
+        public String getDescription() {
+            return "1767:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA29_1 = input.LA(1);
+
+                         
+                        int index29_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred5_InternalActionDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index29_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 29, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA32 extends DFA {
+
+        public DFA32(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 32;
+            this.eot = dfa_14;
+            this.eof = dfa_14;
+            this.min = dfa_15;
+            this.max = dfa_16;
+            this.accept = dfa_17;
+            this.special = dfa_18;
+            this.transition = dfa_19;
+        }
+        public String getDescription() {
+            return "1909:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA32_1 = input.LA(1);
+
+                         
+                        int index32_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred6_InternalActionDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index32_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 32, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_20s = "\12\uffff";
+    static final String dfa_21s = "\1\10\11\uffff";
+    static final String dfa_22s = "\1\4\7\0\2\uffff";
+    static final String dfa_23s = "\1\157\7\0\2\uffff";
+    static final String dfa_24s = "\10\uffff\1\2\1\1";
+    static final String dfa_25s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\0\1\6\2\uffff}>";
+    static final String[] dfa_26s = {
+            "\5\10\5\uffff\2\10\30\uffff\4\10\1\uffff\1\10\1\uffff\3\10\1\uffff\3\10\1\1\1\2\1\3\1\4\1\5\1\6\1\7\32\10\1\uffff\30\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] dfa_20 = DFA.unpackEncodedString(dfa_20s);
+    static final short[] dfa_21 = DFA.unpackEncodedString(dfa_21s);
+    static final char[] dfa_22 = DFA.unpackEncodedStringToUnsignedChars(dfa_22s);
+    static final char[] dfa_23 = DFA.unpackEncodedStringToUnsignedChars(dfa_23s);
+    static final short[] dfa_24 = DFA.unpackEncodedString(dfa_24s);
+    static final short[] dfa_25 = DFA.unpackEncodedString(dfa_25s);
+    static final short[][] dfa_26 = unpackEncodedStringArray(dfa_26s);
+
+    class DFA34 extends DFA {
+
+        public DFA34(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 34;
+            this.eot = dfa_20;
+            this.eof = dfa_21;
+            this.min = dfa_22;
+            this.max = dfa_23;
+            this.accept = dfa_24;
+            this.special = dfa_25;
+            this.transition = dfa_26;
+        }
+        public String getDescription() {
+            return "2138:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA34_6 = input.LA(1);
+
+                         
+                        int index34_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index34_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA34_1 = input.LA(1);
+
+                         
+                        int index34_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index34_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA34_2 = input.LA(1);
+
+                         
+                        int index34_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index34_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA34_3 = input.LA(1);
+
+                         
+                        int index34_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index34_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA34_4 = input.LA(1);
+
+                         
+                        int index34_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index34_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA34_5 = input.LA(1);
+
+                         
+                        int index34_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index34_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA34_7 = input.LA(1);
+
+                         
+                        int index34_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalActionDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index34_7);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 34, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_27s = "\13\uffff";
+    static final String dfa_28s = "\1\1\12\uffff";
+    static final String dfa_29s = "\1\4\1\uffff\10\0\1\uffff";
+    static final String dfa_30s = "\1\157\1\uffff\10\0\1\uffff";
+    static final String dfa_31s = "\1\uffff\1\2\10\uffff\1\1";
+    static final String dfa_32s = "\2\uffff\1\6\1\0\1\1\1\2\1\3\1\7\1\4\1\5\1\uffff}>";
+    static final String[] dfa_33s = {
+            "\5\1\5\uffff\2\1\30\uffff\4\1\1\uffff\1\1\1\uffff\3\1\1\uffff\10\1\1\2\1\3\10\1\1\4\1\5\1\6\1\7\1\10\1\11\14\1\1\uffff\30\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] dfa_27 = DFA.unpackEncodedString(dfa_27s);
+    static final short[] dfa_28 = DFA.unpackEncodedString(dfa_28s);
+    static final char[] dfa_29 = DFA.unpackEncodedStringToUnsignedChars(dfa_29s);
+    static final char[] dfa_30 = DFA.unpackEncodedStringToUnsignedChars(dfa_30s);
+    static final short[] dfa_31 = DFA.unpackEncodedString(dfa_31s);
+    static final short[] dfa_32 = DFA.unpackEncodedString(dfa_32s);
+    static final short[][] dfa_33 = unpackEncodedStringArray(dfa_33s);
+
+    class DFA44 extends DFA {
+
+        public DFA44(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 44;
+            this.eot = dfa_27;
+            this.eof = dfa_28;
+            this.min = dfa_29;
+            this.max = dfa_30;
+            this.accept = dfa_31;
+            this.special = dfa_32;
+            this.transition = dfa_33;
+        }
+        public String getDescription() {
+            return "()* loopback of 2852:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA44_3 = input.LA(1);
+
+                         
+                        int index44_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index44_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA44_4 = input.LA(1);
+
+                         
+                        int index44_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index44_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA44_5 = input.LA(1);
+
+                         
+                        int index44_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index44_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA44_6 = input.LA(1);
+
+                         
+                        int index44_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index44_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA44_8 = input.LA(1);
+
+                         
+                        int index44_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index44_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA44_9 = input.LA(1);
+
+                         
+                        int index44_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index44_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA44_2 = input.LA(1);
+
+                         
+                        int index44_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index44_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA44_7 = input.LA(1);
+
+                         
+                        int index44_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalActionDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index44_7);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 44, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_34s = "\1\73\2\uffff\1\74\7\uffff";
+    static final String dfa_35s = "\1\112\2\uffff\1\107\7\uffff";
+    static final String dfa_36s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\3\1\6";
+    static final String dfa_37s = "\13\uffff}>";
+    static final String[] dfa_38s = {
+            "\1\6\1\3\10\uffff\1\1\1\2\1\4\1\5\1\7\1\10",
+            "",
+            "",
+            "\1\12\12\uffff\1\11",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final char[] dfa_34 = DFA.unpackEncodedStringToUnsignedChars(dfa_34s);
+    static final char[] dfa_35 = DFA.unpackEncodedStringToUnsignedChars(dfa_35s);
+    static final short[] dfa_36 = DFA.unpackEncodedString(dfa_36s);
+    static final short[] dfa_37 = DFA.unpackEncodedString(dfa_37s);
+    static final short[][] dfa_38 = unpackEncodedStringArray(dfa_38s);
+
+    class DFA47 extends DFA {
+
+        public DFA47(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 47;
+            this.eot = dfa_27;
+            this.eof = dfa_27;
+            this.min = dfa_34;
+            this.max = dfa_35;
+            this.accept = dfa_36;
+            this.special = dfa_37;
+            this.transition = dfa_38;
+        }
+        public String getDescription() {
+            return "2928:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )";
+        }
+    }
+    static final String dfa_39s = "\116\uffff";
+    static final String dfa_40s = "\1\2\115\uffff";
+    static final String dfa_41s = "\1\4\1\0\114\uffff";
+    static final String dfa_42s = "\1\157\1\0\114\uffff";
+    static final String dfa_43s = "\2\uffff\1\2\112\uffff\1\1";
+    static final String dfa_44s = "\1\uffff\1\0\114\uffff}>";
+    static final String[] dfa_45s = {
+            "\5\2\5\uffff\2\2\30\uffff\4\2\1\uffff\1\2\1\uffff\1\1\2\2\1\uffff\44\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_39 = DFA.unpackEncodedString(dfa_39s);
+    static final short[] dfa_40 = DFA.unpackEncodedString(dfa_40s);
+    static final char[] dfa_41 = DFA.unpackEncodedStringToUnsignedChars(dfa_41s);
+    static final char[] dfa_42 = DFA.unpackEncodedStringToUnsignedChars(dfa_42s);
+    static final short[] dfa_43 = DFA.unpackEncodedString(dfa_43s);
+    static final short[] dfa_44 = DFA.unpackEncodedString(dfa_44s);
+    static final short[][] dfa_45 = unpackEncodedStringArray(dfa_45s);
+
+    class DFA63 extends DFA {
+
+        public DFA63(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 63;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_45;
+        }
+        public String getDescription() {
+            return "3829:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA63_1 = input.LA(1);
+
+                         
+                        int index63_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred22_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index63_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 63, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_46s = "\1\4\2\0\41\uffff";
+    static final String dfa_47s = "\1\156\2\0\41\uffff";
+    static final String dfa_48s = "\3\uffff\2\1\1\2\35\uffff\1\3";
+    static final String dfa_49s = "\1\0\1\1\1\2\41\uffff}>";
+    static final String[] dfa_50s = {
+            "\1\1\4\5\5\uffff\1\5\31\uffff\3\5\4\uffff\1\2\1\uffff\1\43\1\uffff\2\5\6\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\3\5\2\uffff\12\5\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final char[] dfa_46 = DFA.unpackEncodedStringToUnsignedChars(dfa_46s);
+    static final char[] dfa_47 = DFA.unpackEncodedStringToUnsignedChars(dfa_47s);
+    static final short[] dfa_48 = DFA.unpackEncodedString(dfa_48s);
+    static final short[] dfa_49 = DFA.unpackEncodedString(dfa_49s);
+    static final short[][] dfa_50 = unpackEncodedStringArray(dfa_50s);
+
+    class DFA62 extends DFA {
+
+        public DFA62(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 62;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_46;
+            this.max = dfa_47;
+            this.accept = dfa_48;
+            this.special = dfa_49;
+            this.transition = dfa_50;
+        }
+        public String getDescription() {
+            return "3848:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA62_0 = input.LA(1);
+
+                         
+                        int index62_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA62_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA62_0==47) ) {s = 2;}
+
+                        else if ( (LA62_0==72) && (synpred23_InternalActionDSL())) {s = 3;}
+
+                        else if ( (LA62_0==87) && (synpred23_InternalActionDSL())) {s = 4;}
+
+                        else if ( ((LA62_0>=RULE_STRING && LA62_0<=RULE_DECIMAL)||LA62_0==14||(LA62_0>=40 && LA62_0<=42)||(LA62_0>=51 && LA62_0<=52)||LA62_0==59||(LA62_0>=75 && LA62_0<=76)||LA62_0==80||LA62_0==88||LA62_0==90||(LA62_0>=94 && LA62_0<=96)||(LA62_0>=99 && LA62_0<=108)||LA62_0==110) ) {s = 5;}
+
+                        else if ( (LA62_0==49) ) {s = 35;}
+
+                         
+                        input.seek(index62_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA62_1 = input.LA(1);
+
+                         
+                        int index62_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred23_InternalActionDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index62_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA62_2 = input.LA(1);
+
+                         
+                        int index62_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred23_InternalActionDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index62_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 62, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_51s = {
+            "\5\2\5\uffff\2\2\30\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\1\2\1\1\42\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_51 = unpackEncodedStringArray(dfa_51s);
+
+    class DFA64 extends DFA {
+
+        public DFA64(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 64;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_51;
+        }
+        public String getDescription() {
+            return "3946:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA64_1 = input.LA(1);
+
+                         
+                        int index64_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred24_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index64_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 64, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_52s = "\40\uffff";
+    static final String dfa_53s = "\1\4\26\uffff\1\0\10\uffff";
+    static final String dfa_54s = "\1\156\26\uffff\1\0\10\uffff";
+    static final String dfa_55s = "\1\uffff\1\1\1\2\1\3\1\4\1\5\6\uffff\1\6\11\uffff\1\7\1\uffff\1\12\1\13\1\14\1\15\1\16\1\17\1\10\1\11";
+    static final String dfa_56s = "\1\0\26\uffff\1\1\10\uffff}>";
+    static final String[] dfa_57s = {
+            "\1\5\4\14\5\uffff\1\2\31\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\34\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\2\uffff\2\5\1\1\4\14\1\32\1\33\1\34\1\uffff\1\4",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_52 = DFA.unpackEncodedString(dfa_52s);
+    static final char[] dfa_53 = DFA.unpackEncodedStringToUnsignedChars(dfa_53s);
+    static final char[] dfa_54 = DFA.unpackEncodedStringToUnsignedChars(dfa_54s);
+    static final short[] dfa_55 = DFA.unpackEncodedString(dfa_55s);
+    static final short[] dfa_56 = DFA.unpackEncodedString(dfa_56s);
+    static final short[][] dfa_57 = unpackEncodedStringArray(dfa_57s);
+
+    class DFA66 extends DFA {
+
+        public DFA66(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 66;
+            this.eot = dfa_52;
+            this.eof = dfa_52;
+            this.min = dfa_53;
+            this.max = dfa_54;
+            this.accept = dfa_55;
+            this.special = dfa_56;
+            this.transition = dfa_57;
+        }
+        public String getDescription() {
+            return "3991:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA66_0 = input.LA(1);
+
+                         
+                        int index66_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA66_0==101) ) {s = 1;}
+
+                        else if ( (LA66_0==14) ) {s = 2;}
+
+                        else if ( (LA66_0==90) ) {s = 3;}
+
+                        else if ( (LA66_0==110) && (synpred25_InternalActionDSL())) {s = 4;}
+
+                        else if ( (LA66_0==RULE_ID||(LA66_0>=40 && LA66_0<=42)||LA66_0==59||(LA66_0>=99 && LA66_0<=100)) ) {s = 5;}
+
+                        else if ( ((LA66_0>=RULE_STRING && LA66_0<=RULE_DECIMAL)||(LA66_0>=51 && LA66_0<=52)||(LA66_0>=102 && LA66_0<=105)) ) {s = 12;}
+
+                        else if ( (LA66_0==88) ) {s = 22;}
+
+                        else if ( (LA66_0==94) ) {s = 23;}
+
+                        else if ( (LA66_0==95) ) {s = 24;}
+
+                        else if ( (LA66_0==96) ) {s = 25;}
+
+                        else if ( (LA66_0==106) ) {s = 26;}
+
+                        else if ( (LA66_0==107) ) {s = 27;}
+
+                        else if ( (LA66_0==108) ) {s = 28;}
+
+                        else if ( (LA66_0==47) ) {s = 29;}
+
+                         
+                        input.seek(index66_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA66_23 = input.LA(1);
+
+                         
+                        int index66_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred26_InternalActionDSL()) ) {s = 30;}
+
+                        else if ( (true) ) {s = 31;}
+
+                         
+                        input.seek(index66_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 66, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_58s = "\46\uffff";
+    static final String dfa_59s = "\1\4\2\0\43\uffff";
+    static final String dfa_60s = "\1\156\2\0\43\uffff";
+    static final String dfa_61s = "\3\uffff\2\1\1\2\40\uffff";
+    static final String dfa_62s = "\1\0\1\1\1\2\43\uffff}>";
+    static final String[] dfa_63s = {
+            "\1\1\4\5\5\uffff\1\5\31\uffff\3\5\4\uffff\1\2\3\uffff\3\5\5\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\17\5\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_58 = DFA.unpackEncodedString(dfa_58s);
+    static final char[] dfa_59 = DFA.unpackEncodedStringToUnsignedChars(dfa_59s);
+    static final char[] dfa_60 = DFA.unpackEncodedStringToUnsignedChars(dfa_60s);
+    static final short[] dfa_61 = DFA.unpackEncodedString(dfa_61s);
+    static final short[] dfa_62 = DFA.unpackEncodedString(dfa_62s);
+    static final short[][] dfa_63 = unpackEncodedStringArray(dfa_63s);
+
+    class DFA75 extends DFA {
+
+        public DFA75(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 75;
+            this.eot = dfa_58;
+            this.eof = dfa_58;
+            this.min = dfa_59;
+            this.max = dfa_60;
+            this.accept = dfa_61;
+            this.special = dfa_62;
+            this.transition = dfa_63;
+        }
+        public String getDescription() {
+            return "4483:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA75_0 = input.LA(1);
+
+                         
+                        int index75_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA75_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA75_0==47) ) {s = 2;}
+
+                        else if ( (LA75_0==72) && (synpred29_InternalActionDSL())) {s = 3;}
+
+                        else if ( (LA75_0==87) && (synpred29_InternalActionDSL())) {s = 4;}
+
+                        else if ( ((LA75_0>=RULE_STRING && LA75_0<=RULE_DECIMAL)||LA75_0==14||(LA75_0>=40 && LA75_0<=42)||(LA75_0>=51 && LA75_0<=53)||LA75_0==59||(LA75_0>=75 && LA75_0<=76)||LA75_0==80||LA75_0==88||LA75_0==90||(LA75_0>=94 && LA75_0<=108)||LA75_0==110) ) {s = 5;}
+
+                         
+                        input.seek(index75_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA75_1 = input.LA(1);
+
+                         
+                        int index75_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred29_InternalActionDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index75_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA75_2 = input.LA(1);
+
+                         
+                        int index75_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred29_InternalActionDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index75_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 75, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_64s = {
+            "\5\2\5\uffff\1\2\31\uffff\3\2\4\uffff\1\1\3\uffff\2\2\6\uffff\1\2\14\uffff\1\2\2\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_64 = unpackEncodedStringArray(dfa_64s);
+
+    class DFA82 extends DFA {
+
+        public DFA82(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 82;
+            this.eot = dfa_14;
+            this.eof = dfa_14;
+            this.min = dfa_15;
+            this.max = dfa_16;
+            this.accept = dfa_17;
+            this.special = dfa_18;
+            this.transition = dfa_64;
+        }
+        public String getDescription() {
+            return "4949:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA82_1 = input.LA(1);
+
+                         
+                        int index82_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred32_InternalActionDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index82_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 82, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_65s = "\42\uffff";
+    static final String dfa_66s = "\1\4\2\0\37\uffff";
+    static final String dfa_67s = "\1\156\2\0\37\uffff";
+    static final String dfa_68s = "\3\uffff\1\1\1\2\35\uffff";
+    static final String dfa_69s = "\1\0\1\1\1\2\37\uffff}>";
+    static final String[] dfa_70s = {
+            "\1\1\4\4\5\uffff\1\4\31\uffff\3\4\4\uffff\1\2\3\uffff\2\4\6\uffff\1\4\14\uffff\1\3\2\uffff\2\4\3\uffff\1\4\7\uffff\1\4\1\uffff\1\4\3\uffff\3\4\2\uffff\12\4\1\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_65 = DFA.unpackEncodedString(dfa_65s);
+    static final char[] dfa_66 = DFA.unpackEncodedStringToUnsignedChars(dfa_66s);
+    static final char[] dfa_67 = DFA.unpackEncodedStringToUnsignedChars(dfa_67s);
+    static final short[] dfa_68 = DFA.unpackEncodedString(dfa_68s);
+    static final short[] dfa_69 = DFA.unpackEncodedString(dfa_69s);
+    static final short[][] dfa_70 = unpackEncodedStringArray(dfa_70s);
+
+    class DFA81 extends DFA {
+
+        public DFA81(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 81;
+            this.eot = dfa_65;
+            this.eof = dfa_65;
+            this.min = dfa_66;
+            this.max = dfa_67;
+            this.accept = dfa_68;
+            this.special = dfa_69;
+            this.transition = dfa_70;
+        }
+        public String getDescription() {
+            return "5018:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA81_0 = input.LA(1);
+
+                         
+                        int index81_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA81_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA81_0==47) ) {s = 2;}
+
+                        else if ( (LA81_0==72) && (synpred33_InternalActionDSL())) {s = 3;}
+
+                        else if ( ((LA81_0>=RULE_STRING && LA81_0<=RULE_DECIMAL)||LA81_0==14||(LA81_0>=40 && LA81_0<=42)||(LA81_0>=51 && LA81_0<=52)||LA81_0==59||(LA81_0>=75 && LA81_0<=76)||LA81_0==80||LA81_0==88||LA81_0==90||(LA81_0>=94 && LA81_0<=96)||(LA81_0>=99 && LA81_0<=108)||LA81_0==110) ) {s = 4;}
+
+                         
+                        input.seek(index81_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA81_1 = input.LA(1);
+
+                         
+                        int index81_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred33_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index81_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA81_2 = input.LA(1);
+
+                         
+                        int index81_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred33_InternalActionDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index81_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 81, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA104 extends DFA {
+
+        public DFA104(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 104;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_45;
+        }
+        public String getDescription() {
+            return "6147:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA104_1 = input.LA(1);
+
+                         
+                        int index104_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred36_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index104_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 104, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA103 extends DFA {
+
+        public DFA103(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 103;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_46;
+            this.max = dfa_47;
+            this.accept = dfa_48;
+            this.special = dfa_49;
+            this.transition = dfa_50;
+        }
+        public String getDescription() {
+            return "6166:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA103_0 = input.LA(1);
+
+                         
+                        int index103_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA103_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA103_0==47) ) {s = 2;}
+
+                        else if ( (LA103_0==72) && (synpred37_InternalActionDSL())) {s = 3;}
+
+                        else if ( (LA103_0==87) && (synpred37_InternalActionDSL())) {s = 4;}
+
+                        else if ( ((LA103_0>=RULE_STRING && LA103_0<=RULE_DECIMAL)||LA103_0==14||(LA103_0>=40 && LA103_0<=42)||(LA103_0>=51 && LA103_0<=52)||LA103_0==59||(LA103_0>=75 && LA103_0<=76)||LA103_0==80||LA103_0==88||LA103_0==90||(LA103_0>=94 && LA103_0<=96)||(LA103_0>=99 && LA103_0<=108)||LA103_0==110) ) {s = 5;}
+
+                        else if ( (LA103_0==49) ) {s = 35;}
+
+                         
+                        input.seek(index103_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA103_1 = input.LA(1);
+
+                         
+                        int index103_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred37_InternalActionDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index103_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA103_2 = input.LA(1);
+
+                         
+                        int index103_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred37_InternalActionDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index103_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 103, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA105 extends DFA {
+
+        public DFA105(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 105;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_51;
+        }
+        public String getDescription() {
+            return "6264:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA105_1 = input.LA(1);
+
+                         
+                        int index105_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index105_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 105, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_71s = {
+            "\5\2\5\uffff\2\2\30\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_71 = unpackEncodedStringArray(dfa_71s);
+
+    class DFA109 extends DFA {
+
+        public DFA109(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 109;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_71;
+        }
+        public String getDescription() {
+            return "6423:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA109_1 = input.LA(1);
+
+                         
+                        int index109_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred39_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index109_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 109, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA112 extends DFA {
+
+        public DFA112(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 112;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_45;
+        }
+        public String getDescription() {
+            return "6480:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA112_1 = input.LA(1);
+
+                         
+                        int index112_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index112_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 112, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA111 extends DFA {
+
+        public DFA111(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 111;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_46;
+            this.max = dfa_47;
+            this.accept = dfa_48;
+            this.special = dfa_49;
+            this.transition = dfa_50;
+        }
+        public String getDescription() {
+            return "6499:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA111_0 = input.LA(1);
+
+                         
+                        int index111_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA111_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA111_0==47) ) {s = 2;}
+
+                        else if ( (LA111_0==72) && (synpred41_InternalActionDSL())) {s = 3;}
+
+                        else if ( (LA111_0==87) && (synpred41_InternalActionDSL())) {s = 4;}
+
+                        else if ( ((LA111_0>=RULE_STRING && LA111_0<=RULE_DECIMAL)||LA111_0==14||(LA111_0>=40 && LA111_0<=42)||(LA111_0>=51 && LA111_0<=52)||LA111_0==59||(LA111_0>=75 && LA111_0<=76)||LA111_0==80||LA111_0==88||LA111_0==90||(LA111_0>=94 && LA111_0<=96)||(LA111_0>=99 && LA111_0<=108)||LA111_0==110) ) {s = 5;}
+
+                        else if ( (LA111_0==49) ) {s = 35;}
+
+                         
+                        input.seek(index111_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA111_1 = input.LA(1);
+
+                         
+                        int index111_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalActionDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index111_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA111_2 = input.LA(1);
+
+                         
+                        int index111_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalActionDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index111_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 111, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA113 extends DFA {
+
+        public DFA113(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 113;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_51;
+        }
+        public String getDescription() {
+            return "6597:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA113_1 = input.LA(1);
+
+                         
+                        int index113_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred42_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index113_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 113, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_72s = "\1\41\115\uffff";
+    static final String dfa_73s = "\1\4\40\0\55\uffff";
+    static final String dfa_74s = "\1\157\40\0\55\uffff";
+    static final String dfa_75s = "\41\uffff\1\2\53\uffff\1\1";
+    static final String dfa_76s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37\55\uffff}>";
+    static final String[] dfa_77s = {
+            "\1\1\1\27\1\23\1\24\1\25\5\uffff\1\12\1\41\30\uffff\1\4\1\3\1\5\1\41\1\uffff\1\41\1\uffff\1\40\2\41\1\uffff\1\17\1\20\6\41\1\15\17\41\1\10\1\7\3\41\1\6\6\41\1\uffff\1\31\1\41\1\13\3\41\1\32\1\33\1\34\2\41\1\2\1\16\1\11\1\21\1\22\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[] dfa_72 = DFA.unpackEncodedString(dfa_72s);
+    static final char[] dfa_73 = DFA.unpackEncodedStringToUnsignedChars(dfa_73s);
+    static final char[] dfa_74 = DFA.unpackEncodedStringToUnsignedChars(dfa_74s);
+    static final short[] dfa_75 = DFA.unpackEncodedString(dfa_75s);
+    static final short[] dfa_76 = DFA.unpackEncodedString(dfa_76s);
+    static final short[][] dfa_77 = unpackEncodedStringArray(dfa_77s);
+
+    class DFA116 extends DFA {
+
+        public DFA116(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 116;
+            this.eot = dfa_39;
+            this.eof = dfa_72;
+            this.min = dfa_73;
+            this.max = dfa_74;
+            this.accept = dfa_75;
+            this.special = dfa_76;
+            this.transition = dfa_77;
+        }
+        public String getDescription() {
+            return "6940:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA116_1 = input.LA(1);
+
+                         
+                        int index116_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA116_2 = input.LA(1);
+
+                         
+                        int index116_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA116_3 = input.LA(1);
+
+                         
+                        int index116_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA116_4 = input.LA(1);
+
+                         
+                        int index116_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA116_5 = input.LA(1);
+
+                         
+                        int index116_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA116_6 = input.LA(1);
+
+                         
+                        int index116_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA116_7 = input.LA(1);
+
+                         
+                        int index116_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA116_8 = input.LA(1);
+
+                         
+                        int index116_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA116_9 = input.LA(1);
+
+                         
+                        int index116_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA116_10 = input.LA(1);
+
+                         
+                        int index116_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA116_11 = input.LA(1);
+
+                         
+                        int index116_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA116_12 = input.LA(1);
+
+                         
+                        int index116_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA116_13 = input.LA(1);
+
+                         
+                        int index116_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA116_14 = input.LA(1);
+
+                         
+                        int index116_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA116_15 = input.LA(1);
+
+                         
+                        int index116_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA116_16 = input.LA(1);
+
+                         
+                        int index116_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA116_17 = input.LA(1);
+
+                         
+                        int index116_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA116_18 = input.LA(1);
+
+                         
+                        int index116_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA116_19 = input.LA(1);
+
+                         
+                        int index116_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA116_20 = input.LA(1);
+
+                         
+                        int index116_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA116_21 = input.LA(1);
+
+                         
+                        int index116_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA116_22 = input.LA(1);
+
+                         
+                        int index116_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA116_23 = input.LA(1);
+
+                         
+                        int index116_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA116_24 = input.LA(1);
+
+                         
+                        int index116_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA116_25 = input.LA(1);
+
+                         
+                        int index116_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA116_26 = input.LA(1);
+
+                         
+                        int index116_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA116_27 = input.LA(1);
+
+                         
+                        int index116_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA116_28 = input.LA(1);
+
+                         
+                        int index116_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA116_29 = input.LA(1);
+
+                         
+                        int index116_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA116_30 = input.LA(1);
+
+                         
+                        int index116_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA116_31 = input.LA(1);
+
+                         
+                        int index116_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA116_32 = input.LA(1);
+
+                         
+                        int index116_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalActionDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index116_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 116, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_78s = "\117\uffff";
+    static final String dfa_79s = "\1\2\116\uffff";
+    static final String dfa_80s = "\1\4\1\0\115\uffff";
+    static final String dfa_81s = "\1\161\1\0\115\uffff";
+    static final String dfa_82s = "\2\uffff\1\2\113\uffff\1\1";
+    static final String dfa_83s = "\1\uffff\1\0\115\uffff}>";
+    static final String[] dfa_84s = {
+            "\5\2\5\uffff\2\2\30\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\30\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] dfa_78 = DFA.unpackEncodedString(dfa_78s);
+    static final short[] dfa_79 = DFA.unpackEncodedString(dfa_79s);
+    static final char[] dfa_80 = DFA.unpackEncodedStringToUnsignedChars(dfa_80s);
+    static final char[] dfa_81 = DFA.unpackEncodedStringToUnsignedChars(dfa_81s);
+    static final short[] dfa_82 = DFA.unpackEncodedString(dfa_82s);
+    static final short[] dfa_83 = DFA.unpackEncodedString(dfa_83s);
+    static final short[][] dfa_84 = unpackEncodedStringArray(dfa_84s);
+
+    class DFA134 extends DFA {
+
+        public DFA134(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 134;
+            this.eot = dfa_78;
+            this.eof = dfa_79;
+            this.min = dfa_80;
+            this.max = dfa_81;
+            this.accept = dfa_82;
+            this.special = dfa_83;
+            this.transition = dfa_84;
+        }
+        public String getDescription() {
+            return "7598:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA134_1 = input.LA(1);
+
+                         
+                        int index134_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred50_InternalActionDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index134_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 134, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA132 extends DFA {
+
+        public DFA132(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 132;
+            this.eot = dfa_78;
+            this.eof = dfa_79;
+            this.min = dfa_80;
+            this.max = dfa_81;
+            this.accept = dfa_82;
+            this.special = dfa_83;
+            this.transition = dfa_84;
+        }
+        public String getDescription() {
+            return "7692:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA132_1 = input.LA(1);
+
+                         
+                        int index132_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred52_InternalActionDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index132_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 132, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    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[]{0x0000000000002002L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000098000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000088000L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x00000000FF860000L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000120002L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000100002L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000208000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000030000L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000010000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000400002L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000000L,0xFFFC000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000006L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000078L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000180L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000600L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000001800L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000100000000L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000200000000L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000004400000000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000800000002L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000002000000002L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000120000000010L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000040000000010L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000080000000010L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000200000000002L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000800000000002L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x081AC700000041F0L,0x00005FF9C5011800L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0003000000000000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0002000000000000L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0004000000000000L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0818C700000041F0L,0x00005FF9C5011800L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0010000000000000L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0838C700000041F0L,0x00005FF9C5011800L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0021000000000000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0001000000000002L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x1FC0000000000002L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0800000000000000L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x3000000000000000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x2000000000000000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x4000000000000002L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x8000000000000002L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000000002L,0x000000000000000FL});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x3800000000000002L,0x0000000000000010L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000800000000010L,0x0000000000000100L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x1800000000000002L,0x00000000000007E0L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x1000000000000000L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0800000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001800L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000080000000002L,0x000000000000E000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000000002L,0x00000000000C0000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000000002L,0x0000000000700000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000070000000010L,0x0000000800000000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0800070000000010L,0x0000001800000000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000800000000010L,0x0001000000000100L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x1001000000000000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0010800000000002L,0x0000000000700000L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x081AC700000041F0L,0x00005FF9C5811900L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0010000000000002L,0x0000000000700000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0818C7000000C1F0L,0x00005FF9C5011800L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0001000000008000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0838C700000041F0L,0x00005FFFC5811900L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0001000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0838C700000041F0L,0x00005FFFC5011800L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0020000000000000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0818E700000041F2L,0x00005FFFC5011800L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0818C700000041F2L,0x00005FFFC5011800L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000800000000000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000002L,0x0000000002000000L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0818C700000041F0L,0x00005FF9C5011900L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0001800000008010L,0x0000000038000100L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0001000000000000L,0x0000000028000000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0001000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0818E700000041F0L,0x00005FFFC5011800L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0001200000000000L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0818C700000041F0L,0x00005FFFC5011800L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0818E700000041F0L,0x00005FF9C5011800L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000200000000000L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0818C7000000C1F0L,0x00005FFFC5011800L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0818E7000000C1F0L,0x00005FFFC5011800L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0004000000000002L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0010800000000002L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0010000000000002L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0810800000000002L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0012000000000000L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0818C700000041F2L,0x00005FF9C5011800L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000000L,0x0000A00000000000L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000002L,0x0000A00000000000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000180L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0002800000000010L,0x0000000000000100L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0800000000000002L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0800000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000002L,0x0000001800000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000010000000002L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000000000012L});
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/scoping/AbstractActionDSLScopeProvider.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/scoping/AbstractActionDSLScopeProvider.java
new file mode 100644
index 0000000..614b657
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/scoping/AbstractActionDSLScopeProvider.java
@@ -0,0 +1,22 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+package org.eclipse.osbp.xtext.action.scoping;
+
+import org.eclipse.osbp.xtext.oxtype.scoping.OXtypeScopeProvider;
+
+public abstract class AbstractActionDSLScopeProvider extends OXtypeScopeProvider {
+}
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/serializer/ActionDSLSemanticSequencer.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/serializer/ActionDSLSemanticSequencer.java
index 29135c9..c626725 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/serializer/ActionDSLSemanticSequencer.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/serializer/ActionDSLSemanticSequencer.java
@@ -10,20 +10,23 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action.serializer;
 
 import com.google.inject.Inject;
-import com.google.inject.Provider;
+import java.util.Set;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.osbp.dsl.semantic.common.types.LImport;
-import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.osbp.xtext.action.ActionButton;
 import org.eclipse.osbp.xtext.action.ActionChart;
+import org.eclipse.osbp.xtext.action.ActionCommand;
 import org.eclipse.osbp.xtext.action.ActionDSLPackage;
 import org.eclipse.osbp.xtext.action.ActionDatainterchange;
 import org.eclipse.osbp.xtext.action.ActionDialog;
-import org.eclipse.osbp.xtext.action.ActionGeneric;
+import org.eclipse.osbp.xtext.action.ActionFunction;
 import org.eclipse.osbp.xtext.action.ActionModel;
 import org.eclipse.osbp.xtext.action.ActionPackage;
 import org.eclipse.osbp.xtext.action.ActionParameter;
@@ -31,8 +34,15 @@
 import org.eclipse.osbp.xtext.action.ActionSelectWorkload;
 import org.eclipse.osbp.xtext.action.ActionTask;
 import org.eclipse.osbp.xtext.action.ActionToolbar;
+import org.eclipse.osbp.xtext.action.ActionUI;
 import org.eclipse.osbp.xtext.action.ActionWorkflow;
 import org.eclipse.osbp.xtext.action.services.ActionDSLGrammarAccess;
+import org.eclipse.osbp.xtext.oxtype.oxtype.OXImportDeclaration;
+import org.eclipse.osbp.xtext.oxtype.oxtype.OXtypePackage;
+import org.eclipse.osbp.xtext.oxtype.serializer.OXtypeSemanticSequencer;
+import org.eclipse.xtext.Action;
+import org.eclipse.xtext.Parameter;
+import org.eclipse.xtext.ParserRule;
 import org.eclipse.xtext.common.types.JvmFormalParameter;
 import org.eclipse.xtext.common.types.JvmGenericArrayTypeReference;
 import org.eclipse.xtext.common.types.JvmInnerTypeReference;
@@ -42,14 +52,8 @@
 import org.eclipse.xtext.common.types.JvmUpperBound;
 import org.eclipse.xtext.common.types.JvmWildcardTypeReference;
 import org.eclipse.xtext.common.types.TypesPackage;
-import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor;
+import org.eclipse.xtext.serializer.ISerializationContext;
 import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
-import org.eclipse.xtext.serializer.diagnostic.ISemanticSequencerDiagnosticProvider;
-import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
-import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
-import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider;
-import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
-import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
 import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
 import org.eclipse.xtext.xbase.XAssignment;
 import org.eclipse.xtext.xbase.XBasicForLoopExpression;
@@ -83,1559 +87,644 @@
 import org.eclipse.xtext.xbase.XVariableDeclaration;
 import org.eclipse.xtext.xbase.XWhileExpression;
 import org.eclipse.xtext.xbase.XbasePackage;
-import org.eclipse.xtext.xbase.annotations.serializer.XbaseWithAnnotationsSemanticSequencer;
 import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotation;
 import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationElementValuePair;
 import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsPackage;
 import org.eclipse.xtext.xtype.XFunctionTypeRef;
-import org.eclipse.xtext.xtype.XImportDeclaration;
 import org.eclipse.xtext.xtype.XImportSection;
 import org.eclipse.xtext.xtype.XtypePackage;
 
 @SuppressWarnings("all")
-public class ActionDSLSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+public class ActionDSLSemanticSequencer extends OXtypeSemanticSequencer {
 
 	@Inject
 	private ActionDSLGrammarAccess grammarAccess;
 	
-	public void createSequence(EObject context, EObject semanticObject) {
-		if(semanticObject.eClass().getEPackage() == ActionDSLPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+	@Override
+	public void sequence(ISerializationContext context, EObject semanticObject) {
+		EPackage epackage = semanticObject.eClass().getEPackage();
+		ParserRule rule = context.getParserRule();
+		Action action = context.getAssignedAction();
+		Set<Parameter> parameters = context.getEnabledBooleanParameters();
+		if (epackage == ActionDSLPackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
 			case ActionDSLPackage.ACTION_BUTTON:
-				if(context == grammarAccess.getActionButtonRule()) {
-					sequence_ActionButton(context, (ActionButton) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionButton(context, (ActionButton) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_CHART:
-				if(context == grammarAccess.getActionChartRule() ||
-				   context == grammarAccess.getActionTypeRule()) {
-					sequence_ActionChart(context, (ActionChart) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionChart(context, (ActionChart) semanticObject); 
+				return; 
+			case ActionDSLPackage.ACTION_COMMAND:
+				sequence_ActionCommand(context, (ActionCommand) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_DATAINTERCHANGE:
-				if(context == grammarAccess.getActionDatainterchangeRule() ||
-				   context == grammarAccess.getActionTypeRule()) {
-					sequence_ActionDatainterchange(context, (ActionDatainterchange) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionDatainterchange(context, (ActionDatainterchange) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_DIALOG:
-				if(context == grammarAccess.getActionDialogRule() ||
-				   context == grammarAccess.getActionTypeRule()) {
-					sequence_ActionDialog(context, (ActionDialog) semanticObject); 
-					return; 
-				}
-				else break;
-			case ActionDSLPackage.ACTION_GENERIC:
-				if(context == grammarAccess.getActionGenericRule() ||
-				   context == grammarAccess.getActionTypeRule()) {
-					sequence_ActionGeneric(context, (ActionGeneric) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionDialog(context, (ActionDialog) semanticObject); 
+				return; 
+			case ActionDSLPackage.ACTION_FUNCTION:
+				sequence_ActionFunction(context, (ActionFunction) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_MODEL:
-				if(context == grammarAccess.getActionModelRule()) {
-					sequence_ActionModel(context, (ActionModel) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionModel(context, (ActionModel) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_PACKAGE:
-				if(context == grammarAccess.getActionPackageRule()) {
-					sequence_ActionPackage(context, (ActionPackage) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionPackage(context, (ActionPackage) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_PARAMETER:
-				if(context == grammarAccess.getActionParameterRule()) {
-					sequence_ActionParameter(context, (ActionParameter) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionParameter(context, (ActionParameter) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_REPORT:
-				if(context == grammarAccess.getActionReportRule() ||
-				   context == grammarAccess.getActionTypeRule()) {
-					sequence_ActionReport(context, (ActionReport) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionReport(context, (ActionReport) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_SELECT_WORKLOAD:
-				if(context == grammarAccess.getActionSelectWorkloadRule() ||
-				   context == grammarAccess.getActionTypeRule()) {
-					sequence_ActionSelectWorkload(context, (ActionSelectWorkload) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionSelectWorkload(context, (ActionSelectWorkload) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_TASK:
-				if(context == grammarAccess.getActionTaskRule() ||
-				   context == grammarAccess.getActionTypeRule()) {
-					sequence_ActionTask(context, (ActionTask) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionTask(context, (ActionTask) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_TOOLBAR:
-				if(context == grammarAccess.getActionToolbarRule()) {
-					sequence_ActionToolbar(context, (ActionToolbar) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionToolbar(context, (ActionToolbar) semanticObject); 
+				return; 
+			case ActionDSLPackage.ACTION_UI:
+				sequence_ActionUI(context, (ActionUI) semanticObject); 
+				return; 
 			case ActionDSLPackage.ACTION_WORKFLOW:
-				if(context == grammarAccess.getActionTypeRule() ||
-				   context == grammarAccess.getActionWorkflowRule()) {
-					sequence_ActionWorkflow(context, (ActionWorkflow) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ActionWorkflow(context, (ActionWorkflow) semanticObject); 
+				return; 
 			}
-		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
-			case OSBPTypesPackage.LIMPORT:
-				if(context == grammarAccess.getActionImportRule()) {
-					sequence_ActionImport(context, (LImport) semanticObject); 
-					return; 
-				}
-				else break;
+		else if (epackage == OXtypePackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
+			case OXtypePackage.OX_IMPORT_DECLARATION:
+				sequence_XImportDeclaration(context, (OXImportDeclaration) semanticObject); 
+				return; 
 			}
-		else if(semanticObject.eClass().getEPackage() == TypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+		else if (epackage == TypesPackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
 			case TypesPackage.JVM_FORMAL_PARAMETER:
-				if(context == grammarAccess.getFullJvmFormalParameterRule()) {
+				if (rule == grammarAccess.getFullJvmFormalParameterRule()) {
 					sequence_FullJvmFormalParameter(context, (JvmFormalParameter) semanticObject); 
 					return; 
 				}
-				else if(context == grammarAccess.getJvmFormalParameterRule()) {
+				else if (rule == grammarAccess.getJvmFormalParameterRule()) {
 					sequence_JvmFormalParameter(context, (JvmFormalParameter) semanticObject); 
 					return; 
 				}
 				else break;
 			case TypesPackage.JVM_GENERIC_ARRAY_TYPE_REFERENCE:
-				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
-				   context == grammarAccess.getJvmTypeReferenceRule() ||
-				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
-					sequence_JvmTypeReference(context, (JvmGenericArrayTypeReference) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_JvmTypeReference(context, (JvmGenericArrayTypeReference) semanticObject); 
+				return; 
 			case TypesPackage.JVM_INNER_TYPE_REFERENCE:
-				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
-				   context == grammarAccess.getJvmParameterizedTypeReferenceRule() ||
-				   context == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0() ||
-				   context == grammarAccess.getJvmTypeReferenceRule() ||
-				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
-					sequence_JvmParameterizedTypeReference(context, (JvmInnerTypeReference) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_JvmParameterizedTypeReference(context, (JvmInnerTypeReference) semanticObject); 
+				return; 
 			case TypesPackage.JVM_LOWER_BOUND:
-				if(context == grammarAccess.getJvmLowerBoundAndedRule()) {
+				if (rule == grammarAccess.getJvmLowerBoundAndedRule()) {
 					sequence_JvmLowerBoundAnded(context, (JvmLowerBound) semanticObject); 
 					return; 
 				}
-				else if(context == grammarAccess.getJvmLowerBoundRule()) {
+				else if (rule == grammarAccess.getJvmLowerBoundRule()) {
 					sequence_JvmLowerBound(context, (JvmLowerBound) semanticObject); 
 					return; 
 				}
 				else break;
 			case TypesPackage.JVM_PARAMETERIZED_TYPE_REFERENCE:
-				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
-				   context == grammarAccess.getJvmParameterizedTypeReferenceRule() ||
-				   context == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0() ||
-				   context == grammarAccess.getJvmTypeReferenceRule() ||
-				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+				if (action == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()) {
+					sequence_JvmParameterizedTypeReference_JvmInnerTypeReference_1_4_0_0_0(context, (JvmParameterizedTypeReference) semanticObject); 
+					return; 
+				}
+				else if (rule == grammarAccess.getJvmTypeReferenceRule()
+						|| action == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()
+						|| rule == grammarAccess.getJvmParameterizedTypeReferenceRule()
+						|| rule == grammarAccess.getJvmArgumentTypeReferenceRule()) {
 					sequence_JvmParameterizedTypeReference(context, (JvmParameterizedTypeReference) semanticObject); 
 					return; 
 				}
 				else break;
 			case TypesPackage.JVM_TYPE_PARAMETER:
-				if(context == grammarAccess.getJvmTypeParameterRule()) {
-					sequence_JvmTypeParameter(context, (JvmTypeParameter) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_JvmTypeParameter(context, (JvmTypeParameter) semanticObject); 
+				return; 
 			case TypesPackage.JVM_UPPER_BOUND:
-				if(context == grammarAccess.getJvmUpperBoundAndedRule()) {
+				if (rule == grammarAccess.getJvmUpperBoundAndedRule()) {
 					sequence_JvmUpperBoundAnded(context, (JvmUpperBound) semanticObject); 
 					return; 
 				}
-				else if(context == grammarAccess.getJvmUpperBoundRule()) {
+				else if (rule == grammarAccess.getJvmUpperBoundRule()) {
 					sequence_JvmUpperBound(context, (JvmUpperBound) semanticObject); 
 					return; 
 				}
 				else break;
 			case TypesPackage.JVM_WILDCARD_TYPE_REFERENCE:
-				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
-				   context == grammarAccess.getJvmWildcardTypeReferenceRule()) {
-					sequence_JvmWildcardTypeReference(context, (JvmWildcardTypeReference) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_JvmWildcardTypeReference(context, (JvmWildcardTypeReference) semanticObject); 
+				return; 
 			}
-		else if(semanticObject.eClass().getEPackage() == XAnnotationsPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+		else if (epackage == XAnnotationsPackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
 			case XAnnotationsPackage.XANNOTATION:
-				if(context == grammarAccess.getXAnnotationRule() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule()) {
-					sequence_XAnnotation(context, (XAnnotation) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XAnnotation(context, (XAnnotation) semanticObject); 
+				return; 
 			case XAnnotationsPackage.XANNOTATION_ELEMENT_VALUE_PAIR:
-				if(context == grammarAccess.getXAnnotationElementValuePairRule()) {
-					sequence_XAnnotationElementValuePair(context, (XAnnotationElementValuePair) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XAnnotationElementValuePair(context, (XAnnotationElementValuePair) semanticObject); 
+				return; 
 			}
-		else if(semanticObject.eClass().getEPackage() == XbasePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+		else if (epackage == XbasePackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
 			case XbasePackage.XASSIGNMENT:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XAssignment_XMemberFeatureCall(context, (XAssignment) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XAssignment_XMemberFeatureCall(context, (XAssignment) semanticObject); 
+				return; 
 			case XbasePackage.XBASIC_FOR_LOOP_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXBasicForLoopExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XBasicForLoopExpression(context, (XBasicForLoopExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XBasicForLoopExpression(context, (XBasicForLoopExpression) semanticObject); 
+				return; 
 			case XbasePackage.XBINARY_OPERATION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XAdditiveExpression_XAndExpression_XAssignment_XEqualityExpression_XMultiplicativeExpression_XOrExpression_XOtherOperatorExpression_XRelationalExpression(context, (XBinaryOperation) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XAdditiveExpression_XAndExpression_XAssignment_XEqualityExpression_XMultiplicativeExpression_XOrExpression_XOtherOperatorExpression_XRelationalExpression(context, (XBinaryOperation) semanticObject); 
+				return; 
 			case XbasePackage.XBLOCK_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXBlockExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
+				if (rule == grammarAccess.getXAnnotationElementValueOrCommaListRule()
+						|| action == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()
+						|| rule == grammarAccess.getXAnnotationElementValueRule()
+						|| rule == grammarAccess.getXAnnotationOrExpressionRule()
+						|| rule == grammarAccess.getXExpressionRule()
+						|| rule == grammarAccess.getXAssignmentRule()
+						|| action == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()
+						|| rule == grammarAccess.getXOrExpressionRule()
+						|| action == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXAndExpressionRule()
+						|| action == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXEqualityExpressionRule()
+						|| action == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXRelationalExpressionRule()
+						|| action == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()
+						|| action == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()
+						|| rule == grammarAccess.getXOtherOperatorExpressionRule()
+						|| action == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXAdditiveExpressionRule()
+						|| action == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXMultiplicativeExpressionRule()
+						|| action == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXUnaryOperationRule()
+						|| rule == grammarAccess.getXCastedExpressionRule()
+						|| action == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()
+						|| rule == grammarAccess.getXPostfixOperationRule()
+						|| action == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()
+						|| rule == grammarAccess.getXMemberFeatureCallRule()
+						|| action == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()
+						|| action == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()
+						|| rule == grammarAccess.getXPrimaryExpressionRule()
+						|| rule == grammarAccess.getXParenthesizedExpressionRule()
+						|| rule == grammarAccess.getXBlockExpressionRule()
+						|| rule == grammarAccess.getXExpressionOrVarDeclarationRule()) {
 					sequence_XBlockExpression(context, (XBlockExpression) semanticObject); 
 					return; 
 				}
-				else if(context == grammarAccess.getXExpressionInClosureRule()) {
+				else if (rule == grammarAccess.getXExpressionInClosureRule()) {
 					sequence_XExpressionInClosure(context, (XBlockExpression) semanticObject); 
 					return; 
 				}
 				else break;
 			case XbasePackage.XBOOLEAN_LITERAL:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXBooleanLiteralRule() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXLiteralRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XBooleanLiteral(context, (XBooleanLiteral) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XBooleanLiteral(context, (XBooleanLiteral) semanticObject); 
+				return; 
 			case XbasePackage.XCASE_PART:
-				if(context == grammarAccess.getXCasePartRule()) {
-					sequence_XCasePart(context, (XCasePart) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XCasePart(context, (XCasePart) semanticObject); 
+				return; 
 			case XbasePackage.XCASTED_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XCastedExpression(context, (XCastedExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XCastedExpression(context, (XCastedExpression) semanticObject); 
+				return; 
 			case XbasePackage.XCATCH_CLAUSE:
-				if(context == grammarAccess.getXCatchClauseRule()) {
-					sequence_XCatchClause(context, (XCatchClause) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XCatchClause(context, (XCatchClause) semanticObject); 
+				return; 
 			case XbasePackage.XCLOSURE:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXClosureRule() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXLiteralRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
+				if (rule == grammarAccess.getXAnnotationElementValueOrCommaListRule()
+						|| action == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()
+						|| rule == grammarAccess.getXAnnotationElementValueRule()
+						|| rule == grammarAccess.getXAnnotationOrExpressionRule()
+						|| rule == grammarAccess.getXExpressionRule()
+						|| rule == grammarAccess.getXAssignmentRule()
+						|| action == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()
+						|| rule == grammarAccess.getXOrExpressionRule()
+						|| action == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXAndExpressionRule()
+						|| action == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXEqualityExpressionRule()
+						|| action == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXRelationalExpressionRule()
+						|| action == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()
+						|| action == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()
+						|| rule == grammarAccess.getXOtherOperatorExpressionRule()
+						|| action == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXAdditiveExpressionRule()
+						|| action == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXMultiplicativeExpressionRule()
+						|| action == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXUnaryOperationRule()
+						|| rule == grammarAccess.getXCastedExpressionRule()
+						|| action == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()
+						|| rule == grammarAccess.getXPostfixOperationRule()
+						|| action == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()
+						|| rule == grammarAccess.getXMemberFeatureCallRule()
+						|| action == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()
+						|| action == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()
+						|| rule == grammarAccess.getXPrimaryExpressionRule()
+						|| rule == grammarAccess.getXLiteralRule()
+						|| rule == grammarAccess.getXClosureRule()
+						|| rule == grammarAccess.getXParenthesizedExpressionRule()
+						|| rule == grammarAccess.getXExpressionOrVarDeclarationRule()) {
 					sequence_XClosure(context, (XClosure) semanticObject); 
 					return; 
 				}
-				else if(context == grammarAccess.getXShortClosureRule()) {
+				else if (rule == grammarAccess.getXShortClosureRule()) {
 					sequence_XShortClosure(context, (XClosure) semanticObject); 
 					return; 
 				}
 				else break;
 			case XbasePackage.XCONSTRUCTOR_CALL:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXConstructorCallRule() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XConstructorCall(context, (XConstructorCall) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XConstructorCall(context, (XConstructorCall) semanticObject); 
+				return; 
 			case XbasePackage.XDO_WHILE_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXDoWhileExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XDoWhileExpression(context, (XDoWhileExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XDoWhileExpression(context, (XDoWhileExpression) semanticObject); 
+				return; 
 			case XbasePackage.XFEATURE_CALL:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XFeatureCall(context, (XFeatureCall) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XFeatureCall(context, (XFeatureCall) semanticObject); 
+				return; 
 			case XbasePackage.XFOR_LOOP_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXForLoopExpressionRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XForLoopExpression(context, (XForLoopExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XForLoopExpression(context, (XForLoopExpression) semanticObject); 
+				return; 
 			case XbasePackage.XIF_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXIfExpressionRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XIfExpression(context, (XIfExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XIfExpression(context, (XIfExpression) semanticObject); 
+				return; 
 			case XbasePackage.XINSTANCE_OF_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XRelationalExpression(context, (XInstanceOfExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XRelationalExpression(context, (XInstanceOfExpression) semanticObject); 
+				return; 
 			case XbasePackage.XLIST_LITERAL:
-				if(context == grammarAccess.getXAnnotationElementValueOrCommaListRule()) {
+				if (rule == grammarAccess.getXAnnotationElementValueOrCommaListRule()) {
 					sequence_XAnnotationElementValueOrCommaList_XListLiteral(context, (XListLiteral) semanticObject); 
 					return; 
 				}
-				else if(context == grammarAccess.getXAnnotationElementValueRule()) {
+				else if (rule == grammarAccess.getXAnnotationElementValueRule()) {
 					sequence_XAnnotationElementValue_XListLiteral(context, (XListLiteral) semanticObject); 
 					return; 
 				}
-				else if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXCollectionLiteralRule() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXListLiteralRule() ||
-				   context == grammarAccess.getXLiteralRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
+				else if (action == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()
+						|| rule == grammarAccess.getXAnnotationOrExpressionRule()
+						|| rule == grammarAccess.getXExpressionRule()
+						|| rule == grammarAccess.getXAssignmentRule()
+						|| action == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()
+						|| rule == grammarAccess.getXOrExpressionRule()
+						|| action == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXAndExpressionRule()
+						|| action == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXEqualityExpressionRule()
+						|| action == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXRelationalExpressionRule()
+						|| action == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()
+						|| action == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()
+						|| rule == grammarAccess.getXOtherOperatorExpressionRule()
+						|| action == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXAdditiveExpressionRule()
+						|| action == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXMultiplicativeExpressionRule()
+						|| action == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()
+						|| rule == grammarAccess.getXUnaryOperationRule()
+						|| rule == grammarAccess.getXCastedExpressionRule()
+						|| action == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()
+						|| rule == grammarAccess.getXPostfixOperationRule()
+						|| action == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()
+						|| rule == grammarAccess.getXMemberFeatureCallRule()
+						|| action == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()
+						|| action == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()
+						|| rule == grammarAccess.getXPrimaryExpressionRule()
+						|| rule == grammarAccess.getXLiteralRule()
+						|| rule == grammarAccess.getXCollectionLiteralRule()
+						|| rule == grammarAccess.getXListLiteralRule()
+						|| rule == grammarAccess.getXParenthesizedExpressionRule()
+						|| rule == grammarAccess.getXExpressionOrVarDeclarationRule()) {
 					sequence_XListLiteral(context, (XListLiteral) semanticObject); 
 					return; 
 				}
 				else break;
 			case XbasePackage.XMEMBER_FEATURE_CALL:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XMemberFeatureCall(context, (XMemberFeatureCall) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XMemberFeatureCall(context, (XMemberFeatureCall) semanticObject); 
+				return; 
 			case XbasePackage.XNULL_LITERAL:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXLiteralRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXNullLiteralRule() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XNullLiteral(context, (XNullLiteral) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XNullLiteral(context, (XNullLiteral) semanticObject); 
+				return; 
 			case XbasePackage.XNUMBER_LITERAL:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXLiteralRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXNumberLiteralRule() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XNumberLiteral(context, (XNumberLiteral) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XNumberLiteral(context, (XNumberLiteral) semanticObject); 
+				return; 
 			case XbasePackage.XPOSTFIX_OPERATION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XPostfixOperation(context, (XPostfixOperation) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XPostfixOperation(context, (XPostfixOperation) semanticObject); 
+				return; 
 			case XbasePackage.XRETURN_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXReturnExpressionRule() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XReturnExpression(context, (XReturnExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XReturnExpression(context, (XReturnExpression) semanticObject); 
+				return; 
 			case XbasePackage.XSET_LITERAL:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXCollectionLiteralRule() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXLiteralRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXSetLiteralRule() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XSetLiteral(context, (XSetLiteral) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XSetLiteral(context, (XSetLiteral) semanticObject); 
+				return; 
 			case XbasePackage.XSTRING_LITERAL:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXLiteralRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXStringLiteralRule() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XStringLiteral(context, (XStringLiteral) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XStringLiteral(context, (XStringLiteral) semanticObject); 
+				return; 
 			case XbasePackage.XSWITCH_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXSwitchExpressionRule() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XSwitchExpression(context, (XSwitchExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XSwitchExpression(context, (XSwitchExpression) semanticObject); 
+				return; 
 			case XbasePackage.XSYNCHRONIZED_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXSynchronizedExpressionRule() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XSynchronizedExpression(context, (XSynchronizedExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XSynchronizedExpression(context, (XSynchronizedExpression) semanticObject); 
+				return; 
 			case XbasePackage.XTHROW_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXThrowExpressionRule() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XThrowExpression(context, (XThrowExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XThrowExpression(context, (XThrowExpression) semanticObject); 
+				return; 
 			case XbasePackage.XTRY_CATCH_FINALLY_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXTryCatchFinallyExpressionRule() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XTryCatchFinallyExpression(context, (XTryCatchFinallyExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XTryCatchFinallyExpression(context, (XTryCatchFinallyExpression) semanticObject); 
+				return; 
 			case XbasePackage.XTYPE_LITERAL:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXLiteralRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXTypeLiteralRule() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XTypeLiteral(context, (XTypeLiteral) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XTypeLiteral(context, (XTypeLiteral) semanticObject); 
+				return; 
 			case XbasePackage.XUNARY_OPERATION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule()) {
-					sequence_XUnaryOperation(context, (XUnaryOperation) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XUnaryOperation(context, (XUnaryOperation) semanticObject); 
+				return; 
 			case XbasePackage.XVARIABLE_DECLARATION:
-				if(context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXVariableDeclarationRule()) {
-					sequence_XVariableDeclaration(context, (XVariableDeclaration) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XVariableDeclaration(context, (XVariableDeclaration) semanticObject); 
+				return; 
 			case XbasePackage.XWHILE_EXPRESSION:
-				if(context == grammarAccess.getXAdditiveExpressionRule() ||
-				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAndExpressionRule() ||
-				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXAnnotationElementValueRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
-				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
-				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
-				   context == grammarAccess.getXAssignmentRule() ||
-				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXCastedExpressionRule() ||
-				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
-				   context == grammarAccess.getXEqualityExpressionRule() ||
-				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXExpressionRule() ||
-				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
-				   context == grammarAccess.getXMemberFeatureCallRule() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
-				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOrExpressionRule() ||
-				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
-				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
-				   context == grammarAccess.getXParenthesizedExpressionRule() ||
-				   context == grammarAccess.getXPostfixOperationRule() ||
-				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
-				   context == grammarAccess.getXPrimaryExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionRule() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
-				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
-				   context == grammarAccess.getXUnaryOperationRule() ||
-				   context == grammarAccess.getXWhileExpressionRule()) {
-					sequence_XWhileExpression(context, (XWhileExpression) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XWhileExpression(context, (XWhileExpression) semanticObject); 
+				return; 
 			}
-		else if(semanticObject.eClass().getEPackage() == XtypePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+		else if (epackage == XtypePackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
 			case XtypePackage.XFUNCTION_TYPE_REF:
-				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
-				   context == grammarAccess.getJvmTypeReferenceRule() ||
-				   context == grammarAccess.getXFunctionTypeRefRule()) {
-					sequence_XFunctionTypeRef(context, (XFunctionTypeRef) semanticObject); 
-					return; 
-				}
-				else break;
-			case XtypePackage.XIMPORT_DECLARATION:
-				if(context == grammarAccess.getXImportDeclarationRule()) {
-					sequence_XImportDeclaration(context, (XImportDeclaration) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XFunctionTypeRef(context, (XFunctionTypeRef) semanticObject); 
+				return; 
 			case XtypePackage.XIMPORT_SECTION:
-				if(context == grammarAccess.getXImportSectionRule()) {
-					sequence_XImportSection(context, (XImportSection) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_XImportSection(context, (XImportSection) semanticObject); 
+				return; 
 			}
-		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
+		if (errorAcceptor != null)
+			errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
 	}
 	
 	/**
+	 * Contexts:
+	 *     ActionButton returns ActionButton
+	 *
 	 * Constraint:
-	 *     (
-	 *         name=TRANSLATABLEID 
-	 *         (description?='described by' descriptionValue=TRANSLATABLESTRING)? 
-	 *         iconURI=STRING? 
-	 *         (group=[FunctionLibraryGroup|ID] canexecute=[FunctionLibraryFunction|ID]? executeparameter=[FunctionLibraryFunction|ID]?)? 
-	 *         actionType=ActionType 
-	 *         message=[MessageItem|QualifiedName]?
-	 *     )
+	 *     (name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? command=[ActionCommand|ID] iconURI=STRING?)
 	 */
-	protected void sequence_ActionButton(EObject context, ActionButton semanticObject) {
+	protected void sequence_ActionButton(ISerializationContext context, ActionButton semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionType returns ActionChart
+	 *     ActionChart returns ActionChart
+	 *
 	 * Constraint:
 	 *     action=ChartActionEnum
 	 */
-	protected void sequence_ActionChart(EObject context, ActionChart semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_CHART__ACTION) == ValueTransient.YES)
+	protected void sequence_ActionChart(ISerializationContext context, ActionChart semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_CHART__ACTION) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_CHART__ACTION));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
 		feeder.accept(grammarAccess.getActionChartAccess().getActionChartActionEnumEnumRuleCall_1_0(), semanticObject.getAction());
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionCommand returns ActionCommand
+	 *
+	 * Constraint:
+	 *     (name=ID (hasDescription?='describedBy' description=TRANSLATABLESTRING)? (hasKeyBinding?='keyBinding' keyBinding=STRING)? actionType=ActionType)
+	 */
+	protected void sequence_ActionCommand(ISerializationContext context, ActionCommand semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     ActionType returns ActionDatainterchange
+	 *     ActionDatainterchange returns ActionDatainterchange
+	 *
 	 * Constraint:
 	 *     (action=DatainterchangeActionEnum dataRef=[DataInterchange|ID])
 	 */
-	protected void sequence_ActionDatainterchange(EObject context, ActionDatainterchange semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_DATAINTERCHANGE__ACTION) == ValueTransient.YES)
+	protected void sequence_ActionDatainterchange(ISerializationContext context, ActionDatainterchange semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_DATAINTERCHANGE__ACTION) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_DATAINTERCHANGE__ACTION));
-			if(transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_DATAINTERCHANGE__DATA_REF) == ValueTransient.YES)
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_DATAINTERCHANGE__DATA_REF) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_DATAINTERCHANGE__DATA_REF));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
 		feeder.accept(grammarAccess.getActionDatainterchangeAccess().getActionDatainterchangeActionEnumEnumRuleCall_1_0(), semanticObject.getAction());
-		feeder.accept(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeIDTerminalRuleCall_2_0_1(), semanticObject.getDataRef());
+		feeder.accept(grammarAccess.getActionDatainterchangeAccess().getDataRefDataInterchangeIDTerminalRuleCall_2_0_1(), semanticObject.eGet(ActionDSLPackage.Literals.ACTION_DATAINTERCHANGE__DATA_REF, false));
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionType returns ActionDialog
+	 *     ActionDialog returns ActionDialog
+	 *
 	 * Constraint:
 	 *     action=DialogActionEnum
 	 */
-	protected void sequence_ActionDialog(EObject context, ActionDialog semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_DIALOG__ACTION) == ValueTransient.YES)
+	protected void sequence_ActionDialog(ISerializationContext context, ActionDialog semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_DIALOG__ACTION) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_DIALOG__ACTION));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
 		feeder.accept(grammarAccess.getActionDialogAccess().getActionDialogActionEnumEnumRuleCall_1_0(), semanticObject.getAction());
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionType returns ActionFunction
+	 *     ActionFunction returns ActionFunction
+	 *
 	 * Constraint:
-	 *     action=STRING
+	 *     (
+	 *         actionGroup=[FunctionLibraryActionGroup|ID] 
+	 *         canExecute=[FunctionLibraryCanExecute|ID] 
+	 *         (
+	 *             (
+	 *                 hasExecuteImmediate?='executeImmediate' 
+	 *                 executeImmediate=[FunctionLibraryExecute|ID] 
+	 *                 (
+	 *                     hasMessage?='messageCategory' 
+	 *                     messageCategory=[MessageCategory|ID] 
+	 *                     onFailMessage=[MessageItem|ID] 
+	 *                     (hasSuccessMessage?='onSuccessMessage' onSuccessMessage=[MessageItem|ID])?
+	 *                 )?
+	 *             ) | 
+	 *             (
+	 *                 hasExecuteLater?='executeLater' 
+	 *                 executeLater=[FunctionLibraryExecute|ID] 
+	 *                 (hasStartedMessage?='messageCategory' messageCategory=[MessageCategory|ID] onStartedMessage=[MessageItem|ID])?
+	 *             )
+	 *         )
+	 *     )
 	 */
-	protected void sequence_ActionGeneric(EObject context, ActionGeneric semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_GENERIC__ACTION) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_GENERIC__ACTION));
-		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
-		feeder.accept(grammarAccess.getActionGenericAccess().getActionSTRINGTerminalRuleCall_1_0(), semanticObject.getAction());
-		feeder.finish();
-	}
-	
-	
-	/**
-	 * Constraint:
-	 *     importedNamespace=ActionQualifiedNameWithWildCard
-	 */
-	protected void sequence_ActionImport(EObject context, LImport semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, OSBPTypesPackage.Literals.LIMPORT__IMPORTED_NAMESPACE) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OSBPTypesPackage.Literals.LIMPORT__IMPORTED_NAMESPACE));
-		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
-		feeder.accept(grammarAccess.getActionImportAccess().getImportedNamespaceActionQualifiedNameWithWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
-		feeder.finish();
-	}
-	
-	
-	/**
-	 * Constraint:
-	 *     packages+=ActionPackage*
-	 */
-	protected void sequence_ActionModel(EObject context, ActionModel semanticObject) {
+	protected void sequence_ActionFunction(ISerializationContext context, ActionFunction semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionModel returns ActionModel
+	 *
 	 * Constraint:
-	 *     (name=QualifiedName (imports+=ActionImport* toolbars+=ActionToolbar*)?)
+	 *     ((importSection=XImportSection packages+=ActionPackage+) | packages+=ActionPackage+)?
 	 */
-	protected void sequence_ActionPackage(EObject context, ActionPackage semanticObject) {
+	protected void sequence_ActionModel(ISerializationContext context, ActionModel semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionPackage returns ActionPackage
+	 *
+	 * Constraint:
+	 *     (name=QualifiedName commands+=ActionCommand* toolbars+=ActionToolbar*)
+	 */
+	protected void sequence_ActionPackage(ISerializationContext context, ActionPackage semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     ActionParameter returns ActionParameter
+	 *
 	 * Constraint:
 	 *     parameter=[FunctionLibraryParameter|ID]
 	 */
-	protected void sequence_ActionParameter(EObject context, ActionParameter semanticObject) {
-		genericSequencer.createSequence(context, semanticObject);
+	protected void sequence_ActionParameter(ISerializationContext context, ActionParameter semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_PARAMETER__PARAMETER) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_PARAMETER__PARAMETER));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getActionParameterAccess().getParameterFunctionLibraryParameterIDTerminalRuleCall_2_0_1(), semanticObject.eGet(ActionDSLPackage.Literals.ACTION_PARAMETER__PARAMETER, false));
+		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionType returns ActionReport
+	 *     ActionReport returns ActionReport
+	 *
 	 * Constraint:
 	 *     action=ReportActionEnum
 	 */
-	protected void sequence_ActionReport(EObject context, ActionReport semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_REPORT__ACTION) == ValueTransient.YES)
+	protected void sequence_ActionReport(ISerializationContext context, ActionReport semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_REPORT__ACTION) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_REPORT__ACTION));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
 		feeder.accept(grammarAccess.getActionReportAccess().getActionReportActionEnumEnumRuleCall_1_0(), semanticObject.getAction());
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionType returns ActionSelectWorkload
+	 *     ActionSelectWorkload returns ActionSelectWorkload
+	 *
 	 * Constraint:
 	 *     action=SelectWorkloadActionEnum
 	 */
-	protected void sequence_ActionSelectWorkload(EObject context, ActionSelectWorkload semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_SELECT_WORKLOAD__ACTION) == ValueTransient.YES)
+	protected void sequence_ActionSelectWorkload(ISerializationContext context, ActionSelectWorkload semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_SELECT_WORKLOAD__ACTION) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_SELECT_WORKLOAD__ACTION));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
 		feeder.accept(grammarAccess.getActionSelectWorkloadAccess().getActionSelectWorkloadActionEnumEnumRuleCall_1_0(), semanticObject.getAction());
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionType returns ActionTask
+	 *     ActionTask returns ActionTask
+	 *
 	 * Constraint:
 	 *     action=TaskActionEnum
 	 */
-	protected void sequence_ActionTask(EObject context, ActionTask semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_TASK__ACTION) == ValueTransient.YES)
+	protected void sequence_ActionTask(ISerializationContext context, ActionTask semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_TASK__ACTION) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_TASK__ACTION));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
 		feeder.accept(grammarAccess.getActionTaskAccess().getActionTaskActionEnumEnumRuleCall_1_0(), semanticObject.getAction());
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionToolbar returns ActionToolbar
+	 *
 	 * Constraint:
-	 *     (name=ID (description?='described by' descriptionValue=TRANSLATABLESTRING)? actions+=ActionButton*)
+	 *     (name=ID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? actions+=ActionButton*)
 	 */
-	protected void sequence_ActionToolbar(EObject context, ActionToolbar semanticObject) {
+	protected void sequence_ActionToolbar(ISerializationContext context, ActionToolbar semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ActionType returns ActionUI
+	 *     ActionUI returns ActionUI
+	 *
+	 * Constraint:
+	 *     action=UIActionEnum
+	 */
+	protected void sequence_ActionUI(ISerializationContext context, ActionUI semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_UI__ACTION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_UI__ACTION));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getActionUIAccess().getActionUIActionEnumEnumRuleCall_1_0(), semanticObject.getAction());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     ActionType returns ActionWorkflow
+	 *     ActionWorkflow returns ActionWorkflow
+	 *
 	 * Constraint:
 	 *     action=WorkflowActionEnum
 	 */
-	protected void sequence_ActionWorkflow(EObject context, ActionWorkflow semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_WORKFLOW__ACTION) == ValueTransient.YES)
+	protected void sequence_ActionWorkflow(ISerializationContext context, ActionWorkflow semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ActionDSLPackage.Literals.ACTION_WORKFLOW__ACTION) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ActionDSLPackage.Literals.ACTION_WORKFLOW__ACTION));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
 		feeder.accept(grammarAccess.getActionWorkflowAccess().getActionWorkflowActionEnumEnumRuleCall_1_0(), semanticObject.getAction());
 		feeder.finish();
 	}
+	
+	
 }
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/serializer/ActionDSLSyntacticSequencer.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/serializer/ActionDSLSyntacticSequencer.java
index 6217251..a767400 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/serializer/ActionDSLSyntacticSequencer.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/serializer/ActionDSLSyntacticSequencer.java
@@ -10,7 +10,10 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action.serializer;
 
 import com.google.inject.Inject;
@@ -37,7 +40,7 @@
 	protected AbstractElementAlias match_XBlockExpression_SemicolonKeyword_2_1_q;
 	protected AbstractElementAlias match_XExpressionInClosure_SemicolonKeyword_1_1_q;
 	protected AbstractElementAlias match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q;
-	protected AbstractElementAlias match_XImportDeclaration_SemicolonKeyword_2_q;
+	protected AbstractElementAlias match_XImportDeclaration_SemicolonKeyword_3_q;
 	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_a;
 	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_p;
 	
@@ -50,16 +53,16 @@
 		match_XBlockExpression_SemicolonKeyword_2_1_q = new TokenAlias(false, true, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
 		match_XExpressionInClosure_SemicolonKeyword_1_1_q = new TokenAlias(false, true, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
 		match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()), new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()));
-		match_XImportDeclaration_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
+		match_XImportDeclaration_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3());
 		match_XParenthesizedExpression_LeftParenthesisKeyword_0_a = new TokenAlias(true, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
 		match_XParenthesizedExpression_LeftParenthesisKeyword_0_p = new TokenAlias(true, false, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
 	}
 	
 	@Override
 	protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
-		if(ruleCall.getRule() == grammarAccess.getArrayBracketsRule())
+		if (ruleCall.getRule() == grammarAccess.getArrayBracketsRule())
 			return getArrayBracketsToken(semanticObject, ruleCall, node);
-		else if(ruleCall.getRule() == grammarAccess.getOpSingleAssignRule())
+		else if (ruleCall.getRule() == grammarAccess.getOpSingleAssignRule())
 			return getOpSingleAssignToken(semanticObject, ruleCall, node);
 		return "";
 	}
@@ -92,95 +95,212 @@
 		List<INode> transitionNodes = collectNodes(fromNode, toNode);
 		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
 			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
-			if(match_ActionPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+			if (match_ActionPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
 				emit_ActionPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_ActionToolbar___ItemsKeyword_4_0_LeftCurlyBracketKeyword_4_1_RightCurlyBracketKeyword_4_3__q.equals(syntax))
+			else if (match_ActionToolbar___ItemsKeyword_4_0_LeftCurlyBracketKeyword_4_1_RightCurlyBracketKeyword_4_3__q.equals(syntax))
 				emit_ActionToolbar___ItemsKeyword_4_0_LeftCurlyBracketKeyword_4_1_RightCurlyBracketKeyword_4_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q.equals(syntax))
+			else if (match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q.equals(syntax))
 				emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_XBlockExpression_SemicolonKeyword_2_1_q.equals(syntax))
+			else if (match_XBlockExpression_SemicolonKeyword_2_1_q.equals(syntax))
 				emit_XBlockExpression_SemicolonKeyword_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_XExpressionInClosure_SemicolonKeyword_1_1_q.equals(syntax))
+			else if (match_XExpressionInClosure_SemicolonKeyword_1_1_q.equals(syntax))
 				emit_XExpressionInClosure_SemicolonKeyword_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q.equals(syntax))
+			else if (match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q.equals(syntax))
 				emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_XImportDeclaration_SemicolonKeyword_2_q.equals(syntax))
-				emit_XImportDeclaration_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_a.equals(syntax))
+			else if (match_XImportDeclaration_SemicolonKeyword_3_q.equals(syntax))
+				emit_XImportDeclaration_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if (match_XParenthesizedExpression_LeftParenthesisKeyword_0_a.equals(syntax))
 				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_p.equals(syntax))
+			else if (match_XParenthesizedExpression_LeftParenthesisKeyword_0_p.equals(syntax))
 				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(semanticObject, getLastNavigableState(), syntaxNodes);
 			else acceptNodes(getLastNavigableState(), syntaxNodes);
 		}
 	}
 
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('{' '}')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=QualifiedName (ambiguity) (rule end)
 	 */
 	protected void emit_ActionPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('items' '{' '}')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     descriptionValue=TRANSLATABLESTRING (ambiguity) (rule end)
+	 *     name=ID (ambiguity) (rule end)
 	 */
 	protected void emit_ActionToolbar___ItemsKeyword_4_0_LeftCurlyBracketKeyword_4_1_RightCurlyBracketKeyword_4_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('(' ')')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     annotationType=[JvmAnnotationType|QualifiedName] (ambiguity) (rule end)
 	 */
 	protected void emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';'?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) '}' ')' (rule end)
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) '}' (rule end)
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) expressions+=XExpressionOrVarDeclaration
 	 */
 	protected void emit_XBlockExpression_SemicolonKeyword_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';'?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) (rule end)
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) expressions+=XExpressionOrVarDeclaration
 	 */
 	protected void emit_XExpressionInClosure_SemicolonKeyword_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('(' ')')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) (ambiguity) '=>' returnType=JvmTypeReference
 	 */
 	protected void emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';'?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     importedFullyQualifiedName=QualifiedName (ambiguity) (rule end)
+	 *     importedNamespace=QualifiedNameWithWildcard (ambiguity) (rule end)
+	 *     importedType=[JvmDeclaredType|QualifiedName] (ambiguity) (rule end)
+	 *     memberName=ValidID (ambiguity) (rule end)
+	 *     wildcard?='*' (ambiguity) (rule end)
 	 */
-	protected void emit_XImportDeclaration_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+	protected void emit_XImportDeclaration_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     '('*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) (ambiguity) '#' '[' ']' (rule start)
+	 *     (rule start) (ambiguity) '#' '[' elements+=XExpression
+	 *     (rule start) (ambiguity) '#' '{' '}' (rule start)
+	 *     (rule start) (ambiguity) '#' '{' elements+=XExpression
+	 *     (rule start) (ambiguity) '<' typeArguments+=JvmArgumentTypeReference
+	 *     (rule start) (ambiguity) '[' declaredFormalParameters+=JvmFormalParameter
+	 *     (rule start) (ambiguity) '[' explicitSyntax?='|'
+	 *     (rule start) (ambiguity) '[' expression=XExpressionInClosure
+	 *     (rule start) (ambiguity) 'do' body=XExpression
+	 *     (rule start) (ambiguity) 'false' (rule start)
+	 *     (rule start) (ambiguity) 'for' '(' ';' ';' ')' eachExpression=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' ';' ';' updateExpressions+=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' ';' expression=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'for' '(' initExpressions+=XExpressionOrVarDeclaration
+	 *     (rule start) (ambiguity) 'if' '(' if=XExpression
+	 *     (rule start) (ambiguity) 'new' constructor=[JvmConstructor|QualifiedName]
+	 *     (rule start) (ambiguity) 'null' (rule start)
+	 *     (rule start) (ambiguity) 'return' (rule start)
+	 *     (rule start) (ambiguity) 'return' expression=XExpression
+	 *     (rule start) (ambiguity) 'switch' '(' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'switch' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'switch' switch=XExpression
+	 *     (rule start) (ambiguity) 'synchronized' '(' param=XExpression
+	 *     (rule start) (ambiguity) 'throw' expression=XExpression
+	 *     (rule start) (ambiguity) 'try' expression=XExpression
+	 *     (rule start) (ambiguity) 'typeof' '(' type=[JvmType|QualifiedName]
+	 *     (rule start) (ambiguity) 'while' '(' predicate=XExpression
+	 *     (rule start) (ambiguity) '{' '}' (rule start)
+	 *     (rule start) (ambiguity) '{' expressions+=XExpressionOrVarDeclaration
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|FeatureCallID]
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|IdOrSuper]
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|OpUnary]
+	 *     (rule start) (ambiguity) isTrue?='true'
+	 *     (rule start) (ambiguity) value=Number
+	 *     (rule start) (ambiguity) value=STRING
+	 *     (rule start) (ambiguity) {XAssignment.assignable=}
+	 *     (rule start) (ambiguity) {XBinaryOperation.leftOperand=}
+	 *     (rule start) (ambiguity) {XCastedExpression.target=}
+	 *     (rule start) (ambiguity) {XInstanceOfExpression.expression=}
+	 *     (rule start) (ambiguity) {XMemberFeatureCall.memberCallTarget=}
+	 *     (rule start) (ambiguity) {XPostfixOperation.operand=}
 	 */
 	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     '('+
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) (ambiguity) '#' '[' ']' ')' (rule start)
+	 *     (rule start) (ambiguity) '#' '[' elements+=XExpression
+	 *     (rule start) (ambiguity) '#' '{' '}' ')' (rule start)
+	 *     (rule start) (ambiguity) '#' '{' elements+=XExpression
+	 *     (rule start) (ambiguity) '<' typeArguments+=JvmArgumentTypeReference
+	 *     (rule start) (ambiguity) '[' declaredFormalParameters+=JvmFormalParameter
+	 *     (rule start) (ambiguity) '[' explicitSyntax?='|'
+	 *     (rule start) (ambiguity) '[' expression=XExpressionInClosure
+	 *     (rule start) (ambiguity) 'do' body=XExpression
+	 *     (rule start) (ambiguity) 'false' ')' (rule start)
+	 *     (rule start) (ambiguity) 'for' '(' ';' ';' ')' eachExpression=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' ';' ';' updateExpressions+=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' ';' expression=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'for' '(' initExpressions+=XExpressionOrVarDeclaration
+	 *     (rule start) (ambiguity) 'if' '(' if=XExpression
+	 *     (rule start) (ambiguity) 'new' constructor=[JvmConstructor|QualifiedName]
+	 *     (rule start) (ambiguity) 'null' ')' (rule start)
+	 *     (rule start) (ambiguity) 'return' ')' (rule start)
+	 *     (rule start) (ambiguity) 'return' expression=XExpression
+	 *     (rule start) (ambiguity) 'switch' '(' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'switch' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'switch' switch=XExpression
+	 *     (rule start) (ambiguity) 'synchronized' '(' param=XExpression
+	 *     (rule start) (ambiguity) 'throw' expression=XExpression
+	 *     (rule start) (ambiguity) 'try' expression=XExpression
+	 *     (rule start) (ambiguity) 'typeof' '(' type=[JvmType|QualifiedName]
+	 *     (rule start) (ambiguity) 'while' '(' predicate=XExpression
+	 *     (rule start) (ambiguity) '{' '}' ')' (rule start)
+	 *     (rule start) (ambiguity) '{' expressions+=XExpressionOrVarDeclaration
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|FeatureCallID]
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|IdOrSuper]
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|OpUnary]
+	 *     (rule start) (ambiguity) isTrue?='true'
+	 *     (rule start) (ambiguity) value=Number
+	 *     (rule start) (ambiguity) value=STRING
+	 *     (rule start) (ambiguity) {XAssignment.assignable=}
+	 *     (rule start) (ambiguity) {XBinaryOperation.leftOperand=}
+	 *     (rule start) (ambiguity) {XCastedExpression.target=}
+	 *     (rule start) (ambiguity) {XInstanceOfExpression.expression=}
+	 *     (rule start) (ambiguity) {XMemberFeatureCall.memberCallTarget=}
+	 *     (rule start) (ambiguity) {XPostfixOperation.operand=}
 	 */
 	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/services/ActionDSLGrammarAccess.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/services/ActionDSLGrammarAccess.java
index 00fd5dc..03334d1 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/services/ActionDSLGrammarAccess.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/services/ActionDSLGrammarAccess.java
@@ -10,18 +10,32 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action.services;
 
-import com.google.inject.Singleton;
 import com.google.inject.Inject;
-
+import com.google.inject.Singleton;
 import java.util.List;
-
-import org.eclipse.xtext.*;
+import org.eclipse.osbp.xtext.oxtype.services.OXtypeGrammarAccess;
+import org.eclipse.xtext.Action;
+import org.eclipse.xtext.Alternatives;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.CrossReference;
+import org.eclipse.xtext.EnumLiteralDeclaration;
+import org.eclipse.xtext.EnumRule;
+import org.eclipse.xtext.Grammar;
+import org.eclipse.xtext.GrammarUtil;
+import org.eclipse.xtext.Group;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.TerminalRule;
+import org.eclipse.xtext.service.AbstractElementFinder.AbstractEnumRuleElementFinder;
+import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
 import org.eclipse.xtext.service.GrammarProvider;
-import org.eclipse.xtext.service.AbstractElementFinder.*;
-
 import org.eclipse.xtext.xbase.annotations.services.XbaseWithAnnotationsGrammarAccess;
 import org.eclipse.xtext.xbase.services.XbaseGrammarAccess;
 import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;
@@ -29,25 +43,36 @@
 @Singleton
 public class ActionDSLGrammarAccess extends AbstractGrammarElementFinder {
 	
-	
 	public class ActionModelElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionModel");
-		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
-		private final RuleCall cPackagesActionPackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionModel");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cImportSectionAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cImportSectionXImportSectionParserRuleCall_0_0 = (RuleCall)cImportSectionAssignment_0.eContents().get(0);
+		private final Assignment cPackagesAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cPackagesActionPackageParserRuleCall_1_0 = (RuleCall)cPackagesAssignment_1.eContents().get(0);
 		
 		//ActionModel:
+		//	importSection=XImportSection?
 		//	packages+=ActionPackage*;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
+		//importSection=XImportSection? packages+=ActionPackage*
+		public Group getGroup() { return cGroup; }
+		
+		//importSection=XImportSection?
+		public Assignment getImportSectionAssignment_0() { return cImportSectionAssignment_0; }
+		
+		//XImportSection
+		public RuleCall getImportSectionXImportSectionParserRuleCall_0_0() { return cImportSectionXImportSectionParserRuleCall_0_0; }
+		
 		//packages+=ActionPackage*
-		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
-
+		public Assignment getPackagesAssignment_1() { return cPackagesAssignment_1; }
+		
 		//ActionPackage
-		public RuleCall getPackagesActionPackageParserRuleCall_0() { return cPackagesActionPackageParserRuleCall_0; }
+		public RuleCall getPackagesActionPackageParserRuleCall_1_0() { return cPackagesActionPackageParserRuleCall_1_0; }
 	}
-
 	public class ActionPackageElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionPackage");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionPackage");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cActionPackageAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cPackageKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -55,55 +80,135 @@
 		private final RuleCall cNameQualifiedNameParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
 		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
 		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
-		private final Assignment cImportsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
-		private final RuleCall cImportsActionImportParserRuleCall_3_1_0 = (RuleCall)cImportsAssignment_3_1.eContents().get(0);
+		private final Assignment cCommandsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cCommandsActionCommandParserRuleCall_3_1_0 = (RuleCall)cCommandsAssignment_3_1.eContents().get(0);
 		private final Assignment cToolbarsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
 		private final RuleCall cToolbarsActionToolbarParserRuleCall_3_2_0 = (RuleCall)cToolbarsAssignment_3_2.eContents().get(0);
 		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
 		
 		//ActionPackage:
-		//	{ActionPackage} "package" name=QualifiedName ("{" imports+=ActionImport* toolbars+=ActionToolbar* "}")?;
-		public ParserRule getRule() { return rule; }
-
-		//{ActionPackage} "package" name=QualifiedName ("{" imports+=ActionImport* toolbars+=ActionToolbar* "}")?
+		//	{ActionPackage} 'package' name=QualifiedName ('{'
+		//	commands+=ActionCommand*
+		//	toolbars+=ActionToolbar*
+		//	'}')?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ActionPackage} 'package' name=QualifiedName ('{' commands+=ActionCommand* toolbars+=ActionToolbar* '}')?
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ActionPackage}
 		public Action getActionPackageAction_0() { return cActionPackageAction_0; }
-
-		//"package"
+		
+		//'package'
 		public Keyword getPackageKeyword_1() { return cPackageKeyword_1; }
-
+		
 		//name=QualifiedName
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
-
+		
 		//QualifiedName
 		public RuleCall getNameQualifiedNameParserRuleCall_2_0() { return cNameQualifiedNameParserRuleCall_2_0; }
-
-		//("{" imports+=ActionImport* toolbars+=ActionToolbar* "}")?
+		
+		//('{' commands+=ActionCommand* toolbars+=ActionToolbar* '}')?
 		public Group getGroup_3() { return cGroup_3; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
-
-		//imports+=ActionImport*
-		public Assignment getImportsAssignment_3_1() { return cImportsAssignment_3_1; }
-
-		//ActionImport
-		public RuleCall getImportsActionImportParserRuleCall_3_1_0() { return cImportsActionImportParserRuleCall_3_1_0; }
-
+		
+		//commands+=ActionCommand*
+		public Assignment getCommandsAssignment_3_1() { return cCommandsAssignment_3_1; }
+		
+		//ActionCommand
+		public RuleCall getCommandsActionCommandParserRuleCall_3_1_0() { return cCommandsActionCommandParserRuleCall_3_1_0; }
+		
 		//toolbars+=ActionToolbar*
 		public Assignment getToolbarsAssignment_3_2() { return cToolbarsAssignment_3_2; }
-
+		
 		//ActionToolbar
 		public RuleCall getToolbarsActionToolbarParserRuleCall_3_2_0() { return cToolbarsActionToolbarParserRuleCall_3_2_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
 	}
-
+	public class ActionCommandElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionCommand");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cActionCommandAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cCommandKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Assignment cHasDescriptionAssignment_3_0 = (Assignment)cGroup_3.eContents().get(0);
+		private final Keyword cHasDescriptionDescribedByKeyword_3_0_0 = (Keyword)cHasDescriptionAssignment_3_0.eContents().get(0);
+		private final Assignment cDescriptionAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cDescriptionTRANSLATABLESTRINGParserRuleCall_3_1_0 = (RuleCall)cDescriptionAssignment_3_1.eContents().get(0);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Assignment cHasKeyBindingAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
+		private final Keyword cHasKeyBindingKeyBindingKeyword_4_0_0 = (Keyword)cHasKeyBindingAssignment_4_0.eContents().get(0);
+		private final Assignment cKeyBindingAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final RuleCall cKeyBindingSTRINGTerminalRuleCall_4_1_0 = (RuleCall)cKeyBindingAssignment_4_1.eContents().get(0);
+		private final Assignment cActionTypeAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cActionTypeActionTypeParserRuleCall_5_0 = (RuleCall)cActionTypeAssignment_5.eContents().get(0);
+		
+		//ActionCommand:
+		//	{ActionCommand} 'command' name=ID (hasDescription?='describedBy' description=TRANSLATABLESTRING)?
+		//	(hasKeyBinding?='keyBinding' keyBinding=STRING)?
+		//	actionType=ActionType;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ActionCommand} 'command' name=ID (hasDescription?='describedBy' description=TRANSLATABLESTRING)?
+		//(hasKeyBinding?='keyBinding' keyBinding=STRING)? actionType=ActionType
+		public Group getGroup() { return cGroup; }
+		
+		//{ActionCommand}
+		public Action getActionCommandAction_0() { return cActionCommandAction_0; }
+		
+		//'command'
+		public Keyword getCommandKeyword_1() { return cCommandKeyword_1; }
+		
+		//name=ID
+		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+		
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
+		
+		//(hasDescription?='describedBy' description=TRANSLATABLESTRING)?
+		public Group getGroup_3() { return cGroup_3; }
+		
+		//hasDescription?='describedBy'
+		public Assignment getHasDescriptionAssignment_3_0() { return cHasDescriptionAssignment_3_0; }
+		
+		//'describedBy'
+		public Keyword getHasDescriptionDescribedByKeyword_3_0_0() { return cHasDescriptionDescribedByKeyword_3_0_0; }
+		
+		//description=TRANSLATABLESTRING
+		public Assignment getDescriptionAssignment_3_1() { return cDescriptionAssignment_3_1; }
+		
+		//TRANSLATABLESTRING
+		public RuleCall getDescriptionTRANSLATABLESTRINGParserRuleCall_3_1_0() { return cDescriptionTRANSLATABLESTRINGParserRuleCall_3_1_0; }
+		
+		//(hasKeyBinding?='keyBinding' keyBinding=STRING)?
+		public Group getGroup_4() { return cGroup_4; }
+		
+		//hasKeyBinding?='keyBinding'
+		public Assignment getHasKeyBindingAssignment_4_0() { return cHasKeyBindingAssignment_4_0; }
+		
+		//'keyBinding'
+		public Keyword getHasKeyBindingKeyBindingKeyword_4_0_0() { return cHasKeyBindingKeyBindingKeyword_4_0_0; }
+		
+		//keyBinding=STRING
+		public Assignment getKeyBindingAssignment_4_1() { return cKeyBindingAssignment_4_1; }
+		
+		//STRING
+		public RuleCall getKeyBindingSTRINGTerminalRuleCall_4_1_0() { return cKeyBindingSTRINGTerminalRuleCall_4_1_0; }
+		
+		//actionType=ActionType
+		public Assignment getActionTypeAssignment_5() { return cActionTypeAssignment_5; }
+		
+		//ActionType
+		public RuleCall getActionTypeActionTypeParserRuleCall_5_0() { return cActionTypeActionTypeParserRuleCall_5_0; }
+	}
 	public class ActionToolbarElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionToolbar");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionToolbar");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cActionToolbarAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cToolbarKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -122,62 +227,61 @@
 		private final Keyword cRightCurlyBracketKeyword_4_3 = (Keyword)cGroup_4.eContents().get(3);
 		
 		//ActionToolbar:
-		//	{ActionToolbar} "toolbar" name=ID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("items" "{"
-		//	actions+=ActionButton* "}")?;
-		public ParserRule getRule() { return rule; }
-
-		//{ActionToolbar} "toolbar" name=ID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("items" "{"
-		//actions+=ActionButton* "}")?
+		//	{ActionToolbar} 'toolbar' name=ID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? ('items' '{'
+		//	actions+=ActionButton* '}')?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ActionToolbar} 'toolbar' name=ID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? ('items' '{'
+		//actions+=ActionButton* '}')?
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ActionToolbar}
 		public Action getActionToolbarAction_0() { return cActionToolbarAction_0; }
-
-		//"toolbar"
+		
+		//'toolbar'
 		public Keyword getToolbarKeyword_1() { return cToolbarKeyword_1; }
-
+		
 		//name=ID
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
-
+		
 		//ID
 		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
-
-		//(description?="described by" descriptionValue=TRANSLATABLESTRING)?
+		
+		//(description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
 		public Group getGroup_3() { return cGroup_3; }
-
-		//description?="described by"
+		
+		//description?='describedBy'
 		public Assignment getDescriptionAssignment_3_0() { return cDescriptionAssignment_3_0; }
-
-		//"described by"
+		
+		//'describedBy'
 		public Keyword getDescriptionDescribedByKeyword_3_0_0() { return cDescriptionDescribedByKeyword_3_0_0; }
-
+		
 		//descriptionValue=TRANSLATABLESTRING
 		public Assignment getDescriptionValueAssignment_3_1() { return cDescriptionValueAssignment_3_1; }
-
+		
 		//TRANSLATABLESTRING
 		public RuleCall getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0() { return cDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0; }
-
-		//("items" "{" actions+=ActionButton* "}")?
+		
+		//('items' '{' actions+=ActionButton* '}')?
 		public Group getGroup_4() { return cGroup_4; }
-
-		//"items"
+		
+		//'items'
 		public Keyword getItemsKeyword_4_0() { return cItemsKeyword_4_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_4_1() { return cLeftCurlyBracketKeyword_4_1; }
-
+		
 		//actions+=ActionButton*
 		public Assignment getActionsAssignment_4_2() { return cActionsAssignment_4_2; }
-
+		
 		//ActionButton
 		public RuleCall getActionsActionButtonParserRuleCall_4_2_0() { return cActionsActionButtonParserRuleCall_4_2_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_4_3() { return cRightCurlyBracketKeyword_4_3; }
 	}
-
 	public class ActionButtonElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionButton");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionButton");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cActionButtonAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cItemKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -188,161 +292,77 @@
 		private final Keyword cDescriptionDescribedByKeyword_3_0_0 = (Keyword)cDescriptionAssignment_3_0.eContents().get(0);
 		private final Assignment cDescriptionValueAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
 		private final RuleCall cDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0 = (RuleCall)cDescriptionValueAssignment_3_1.eContents().get(0);
-		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
-		private final Keyword cIconKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
-		private final Assignment cIconURIAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
-		private final RuleCall cIconURISTRINGTerminalRuleCall_4_1_0 = (RuleCall)cIconURIAssignment_4_1.eContents().get(0);
-		private final UnorderedGroup cUnorderedGroup_5 = (UnorderedGroup)cGroup.eContents().get(5);
-		private final Group cGroup_5_0 = (Group)cUnorderedGroup_5.eContents().get(0);
-		private final Keyword cGroupKeyword_5_0_0 = (Keyword)cGroup_5_0.eContents().get(0);
-		private final Assignment cGroupAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
-		private final CrossReference cGroupFunctionLibraryGroupCrossReference_5_0_1_0 = (CrossReference)cGroupAssignment_5_0_1.eContents().get(0);
-		private final RuleCall cGroupFunctionLibraryGroupIDTerminalRuleCall_5_0_1_0_1 = (RuleCall)cGroupFunctionLibraryGroupCrossReference_5_0_1_0.eContents().get(1);
-		private final Group cGroup_5_0_2 = (Group)cGroup_5_0.eContents().get(2);
-		private final Keyword cCanExecuteKeyword_5_0_2_0 = (Keyword)cGroup_5_0_2.eContents().get(0);
-		private final Assignment cCanexecuteAssignment_5_0_2_1 = (Assignment)cGroup_5_0_2.eContents().get(1);
-		private final CrossReference cCanexecuteFunctionLibraryFunctionCrossReference_5_0_2_1_0 = (CrossReference)cCanexecuteAssignment_5_0_2_1.eContents().get(0);
-		private final RuleCall cCanexecuteFunctionLibraryFunctionIDTerminalRuleCall_5_0_2_1_0_1 = (RuleCall)cCanexecuteFunctionLibraryFunctionCrossReference_5_0_2_1_0.eContents().get(1);
-		private final Group cGroup_5_1 = (Group)cUnorderedGroup_5.eContents().get(1);
-		private final Keyword cExecuteParameterKeyword_5_1_0 = (Keyword)cGroup_5_1.eContents().get(0);
-		private final Assignment cExecuteparameterAssignment_5_1_1 = (Assignment)cGroup_5_1.eContents().get(1);
-		private final CrossReference cExecuteparameterFunctionLibraryFunctionCrossReference_5_1_1_0 = (CrossReference)cExecuteparameterAssignment_5_1_1.eContents().get(0);
-		private final RuleCall cExecuteparameterFunctionLibraryFunctionIDTerminalRuleCall_5_1_1_0_1 = (RuleCall)cExecuteparameterFunctionLibraryFunctionCrossReference_5_1_1_0.eContents().get(1);
-		private final Assignment cActionTypeAssignment_6 = (Assignment)cGroup.eContents().get(6);
-		private final RuleCall cActionTypeActionTypeParserRuleCall_6_0 = (RuleCall)cActionTypeAssignment_6.eContents().get(0);
-		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
-		private final Keyword cMessageKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
-		private final Assignment cMessageAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
-		private final CrossReference cMessageMessageItemCrossReference_7_1_0 = (CrossReference)cMessageAssignment_7_1.eContents().get(0);
-		private final RuleCall cMessageMessageItemQualifiedNameParserRuleCall_7_1_0_1 = (RuleCall)cMessageMessageItemCrossReference_7_1_0.eContents().get(1);
+		private final Keyword cCommandKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cCommandAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final CrossReference cCommandActionCommandCrossReference_5_0 = (CrossReference)cCommandAssignment_5.eContents().get(0);
+		private final RuleCall cCommandActionCommandIDTerminalRuleCall_5_0_1 = (RuleCall)cCommandActionCommandCrossReference_5_0.eContents().get(1);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cIconKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Assignment cIconURIAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
+		private final RuleCall cIconURISTRINGTerminalRuleCall_6_1_0 = (RuleCall)cIconURIAssignment_6_1.eContents().get(0);
 		
 		//ActionButton:
-		//	{ActionButton} "item" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("icon"
-		//	iconURI=STRING)? ("group" group=[func::FunctionLibraryGroup] ("canExecute"
-		//	canexecute=[func::FunctionLibraryFunction])? & ("executeParameter"
-		//	executeparameter=[func::FunctionLibraryFunction])?)? actionType=ActionType ("message"
-		//	message=[msg::MessageItem|QualifiedName])?;
-		public ParserRule getRule() { return rule; }
-
-		//{ActionButton} "item" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("icon"
-		//iconURI=STRING)? ("group" group=[func::FunctionLibraryGroup] ("canExecute"
-		//canexecute=[func::FunctionLibraryFunction])? & ("executeParameter"
-		//executeparameter=[func::FunctionLibraryFunction])?)? actionType=ActionType ("message"
-		//message=[msg::MessageItem|QualifiedName])?
+		//	{ActionButton} 'item' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
+		//	'command' command=[ActionCommand] ('icon' iconURI=STRING)?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ActionButton} 'item' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? 'command'
+		//command=[ActionCommand] ('icon' iconURI=STRING)?
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ActionButton}
 		public Action getActionButtonAction_0() { return cActionButtonAction_0; }
-
-		//"item"
+		
+		//'item'
 		public Keyword getItemKeyword_1() { return cItemKeyword_1; }
-
+		
 		//name=TRANSLATABLEID
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
-
+		
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0; }
-
-		//(description?="described by" descriptionValue=TRANSLATABLESTRING)?
+		
+		//(description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
 		public Group getGroup_3() { return cGroup_3; }
-
-		//description?="described by"
+		
+		//description?='describedBy'
 		public Assignment getDescriptionAssignment_3_0() { return cDescriptionAssignment_3_0; }
-
-		//"described by"
+		
+		//'describedBy'
 		public Keyword getDescriptionDescribedByKeyword_3_0_0() { return cDescriptionDescribedByKeyword_3_0_0; }
-
+		
 		//descriptionValue=TRANSLATABLESTRING
 		public Assignment getDescriptionValueAssignment_3_1() { return cDescriptionValueAssignment_3_1; }
-
+		
 		//TRANSLATABLESTRING
 		public RuleCall getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0() { return cDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0; }
-
-		//("icon" iconURI=STRING)?
-		public Group getGroup_4() { return cGroup_4; }
-
-		//"icon"
-		public Keyword getIconKeyword_4_0() { return cIconKeyword_4_0; }
-
+		
+		//'command'
+		public Keyword getCommandKeyword_4() { return cCommandKeyword_4; }
+		
+		//command=[ActionCommand]
+		public Assignment getCommandAssignment_5() { return cCommandAssignment_5; }
+		
+		//[ActionCommand]
+		public CrossReference getCommandActionCommandCrossReference_5_0() { return cCommandActionCommandCrossReference_5_0; }
+		
+		//ID
+		public RuleCall getCommandActionCommandIDTerminalRuleCall_5_0_1() { return cCommandActionCommandIDTerminalRuleCall_5_0_1; }
+		
+		//('icon' iconURI=STRING)?
+		public Group getGroup_6() { return cGroup_6; }
+		
+		//'icon'
+		public Keyword getIconKeyword_6_0() { return cIconKeyword_6_0; }
+		
 		//iconURI=STRING
-		public Assignment getIconURIAssignment_4_1() { return cIconURIAssignment_4_1; }
-
+		public Assignment getIconURIAssignment_6_1() { return cIconURIAssignment_6_1; }
+		
 		//STRING
-		public RuleCall getIconURISTRINGTerminalRuleCall_4_1_0() { return cIconURISTRINGTerminalRuleCall_4_1_0; }
-
-		//("group" group=[func::FunctionLibraryGroup] ("canExecute" canexecute=[func::FunctionLibraryFunction])? &
-		//("executeParameter" executeparameter=[func::FunctionLibraryFunction])?)?
-		public UnorderedGroup getUnorderedGroup_5() { return cUnorderedGroup_5; }
-
-		//"group" group=[func::FunctionLibraryGroup] ("canExecute" canexecute=[func::FunctionLibraryFunction])?
-		public Group getGroup_5_0() { return cGroup_5_0; }
-
-		//"group"
-		public Keyword getGroupKeyword_5_0_0() { return cGroupKeyword_5_0_0; }
-
-		//group=[func::FunctionLibraryGroup]
-		public Assignment getGroupAssignment_5_0_1() { return cGroupAssignment_5_0_1; }
-
-		//[func::FunctionLibraryGroup]
-		public CrossReference getGroupFunctionLibraryGroupCrossReference_5_0_1_0() { return cGroupFunctionLibraryGroupCrossReference_5_0_1_0; }
-
-		//ID
-		public RuleCall getGroupFunctionLibraryGroupIDTerminalRuleCall_5_0_1_0_1() { return cGroupFunctionLibraryGroupIDTerminalRuleCall_5_0_1_0_1; }
-
-		//("canExecute" canexecute=[func::FunctionLibraryFunction])?
-		public Group getGroup_5_0_2() { return cGroup_5_0_2; }
-
-		//"canExecute"
-		public Keyword getCanExecuteKeyword_5_0_2_0() { return cCanExecuteKeyword_5_0_2_0; }
-
-		//canexecute=[func::FunctionLibraryFunction]
-		public Assignment getCanexecuteAssignment_5_0_2_1() { return cCanexecuteAssignment_5_0_2_1; }
-
-		//[func::FunctionLibraryFunction]
-		public CrossReference getCanexecuteFunctionLibraryFunctionCrossReference_5_0_2_1_0() { return cCanexecuteFunctionLibraryFunctionCrossReference_5_0_2_1_0; }
-
-		//ID
-		public RuleCall getCanexecuteFunctionLibraryFunctionIDTerminalRuleCall_5_0_2_1_0_1() { return cCanexecuteFunctionLibraryFunctionIDTerminalRuleCall_5_0_2_1_0_1; }
-
-		//("executeParameter" executeparameter=[func::FunctionLibraryFunction])?
-		public Group getGroup_5_1() { return cGroup_5_1; }
-
-		//"executeParameter"
-		public Keyword getExecuteParameterKeyword_5_1_0() { return cExecuteParameterKeyword_5_1_0; }
-
-		//executeparameter=[func::FunctionLibraryFunction]
-		public Assignment getExecuteparameterAssignment_5_1_1() { return cExecuteparameterAssignment_5_1_1; }
-
-		//[func::FunctionLibraryFunction]
-		public CrossReference getExecuteparameterFunctionLibraryFunctionCrossReference_5_1_1_0() { return cExecuteparameterFunctionLibraryFunctionCrossReference_5_1_1_0; }
-
-		//ID
-		public RuleCall getExecuteparameterFunctionLibraryFunctionIDTerminalRuleCall_5_1_1_0_1() { return cExecuteparameterFunctionLibraryFunctionIDTerminalRuleCall_5_1_1_0_1; }
-
-		//actionType=ActionType
-		public Assignment getActionTypeAssignment_6() { return cActionTypeAssignment_6; }
-
-		//ActionType
-		public RuleCall getActionTypeActionTypeParserRuleCall_6_0() { return cActionTypeActionTypeParserRuleCall_6_0; }
-
-		//("message" message=[msg::MessageItem|QualifiedName])?
-		public Group getGroup_7() { return cGroup_7; }
-
-		//"message"
-		public Keyword getMessageKeyword_7_0() { return cMessageKeyword_7_0; }
-
-		//message=[msg::MessageItem|QualifiedName]
-		public Assignment getMessageAssignment_7_1() { return cMessageAssignment_7_1; }
-
-		//[msg::MessageItem|QualifiedName]
-		public CrossReference getMessageMessageItemCrossReference_7_1_0() { return cMessageMessageItemCrossReference_7_1_0; }
-
-		//QualifiedName
-		public RuleCall getMessageMessageItemQualifiedNameParserRuleCall_7_1_0_1() { return cMessageMessageItemQualifiedNameParserRuleCall_7_1_0_1; }
+		public RuleCall getIconURISTRINGTerminalRuleCall_6_1_0() { return cIconURISTRINGTerminalRuleCall_6_1_0; }
 	}
-
 	public class ActionTypeElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionType");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionType");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final RuleCall cActionTaskParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cActionSelectWorkloadParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
@@ -350,189 +370,186 @@
 		private final RuleCall cActionReportParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
 		private final RuleCall cActionChartParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
 		private final RuleCall cActionWorkflowParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
-		private final RuleCall cActionGenericParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cActionFunctionParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
 		private final RuleCall cActionDatainterchangeParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cActionUIParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
 		
 		//ActionType:
-		//	ActionTask | ActionSelectWorkload | ActionDialog | ActionReport | ActionChart | ActionWorkflow | ActionGeneric |
-		//	ActionDatainterchange;
-		public ParserRule getRule() { return rule; }
-
-		//ActionTask | ActionSelectWorkload | ActionDialog | ActionReport | ActionChart | ActionWorkflow | ActionGeneric |
-		//ActionDatainterchange
+		//	ActionTask | ActionSelectWorkload | ActionDialog | ActionReport | ActionChart | ActionWorkflow | ActionFunction |
+		//	ActionDatainterchange | ActionUI;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//ActionTask | ActionSelectWorkload | ActionDialog | ActionReport | ActionChart | ActionWorkflow | ActionFunction |
+		//ActionDatainterchange | ActionUI
 		public Alternatives getAlternatives() { return cAlternatives; }
-
+		
 		//ActionTask
 		public RuleCall getActionTaskParserRuleCall_0() { return cActionTaskParserRuleCall_0; }
-
+		
 		//ActionSelectWorkload
 		public RuleCall getActionSelectWorkloadParserRuleCall_1() { return cActionSelectWorkloadParserRuleCall_1; }
-
+		
 		//ActionDialog
 		public RuleCall getActionDialogParserRuleCall_2() { return cActionDialogParserRuleCall_2; }
-
+		
 		//ActionReport
 		public RuleCall getActionReportParserRuleCall_3() { return cActionReportParserRuleCall_3; }
-
+		
 		//ActionChart
 		public RuleCall getActionChartParserRuleCall_4() { return cActionChartParserRuleCall_4; }
-
+		
 		//ActionWorkflow
 		public RuleCall getActionWorkflowParserRuleCall_5() { return cActionWorkflowParserRuleCall_5; }
-
-		//ActionGeneric
-		public RuleCall getActionGenericParserRuleCall_6() { return cActionGenericParserRuleCall_6; }
-
+		
+		//ActionFunction
+		public RuleCall getActionFunctionParserRuleCall_6() { return cActionFunctionParserRuleCall_6; }
+		
 		//ActionDatainterchange
 		public RuleCall getActionDatainterchangeParserRuleCall_7() { return cActionDatainterchangeParserRuleCall_7; }
+		
+		//ActionUI
+		public RuleCall getActionUIParserRuleCall_8() { return cActionUIParserRuleCall_8; }
 	}
-
 	public class ActionTaskElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionTask");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionTask");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cTaskActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cActionAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cActionTaskActionEnumEnumRuleCall_1_0 = (RuleCall)cActionAssignment_1.eContents().get(0);
 		
 		//ActionTask:
-		//	"taskAction" action=TaskActionEnum;
-		public ParserRule getRule() { return rule; }
-
-		//"taskAction" action=TaskActionEnum
+		//	'taskAction' action=TaskActionEnum;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'taskAction' action=TaskActionEnum
 		public Group getGroup() { return cGroup; }
-
-		//"taskAction"
+		
+		//'taskAction'
 		public Keyword getTaskActionKeyword_0() { return cTaskActionKeyword_0; }
-
+		
 		//action=TaskActionEnum
 		public Assignment getActionAssignment_1() { return cActionAssignment_1; }
-
+		
 		//TaskActionEnum
 		public RuleCall getActionTaskActionEnumEnumRuleCall_1_0() { return cActionTaskActionEnumEnumRuleCall_1_0; }
 	}
-
 	public class ActionSelectWorkloadElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionSelectWorkload");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionSelectWorkload");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cSelectWorkloadActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cActionAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cActionSelectWorkloadActionEnumEnumRuleCall_1_0 = (RuleCall)cActionAssignment_1.eContents().get(0);
 		
 		//ActionSelectWorkload:
-		//	"selectWorkloadAction" action=SelectWorkloadActionEnum;
-		public ParserRule getRule() { return rule; }
-
-		//"selectWorkloadAction" action=SelectWorkloadActionEnum
+		//	'selectWorkloadAction' action=SelectWorkloadActionEnum;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'selectWorkloadAction' action=SelectWorkloadActionEnum
 		public Group getGroup() { return cGroup; }
-
-		//"selectWorkloadAction"
+		
+		//'selectWorkloadAction'
 		public Keyword getSelectWorkloadActionKeyword_0() { return cSelectWorkloadActionKeyword_0; }
-
+		
 		//action=SelectWorkloadActionEnum
 		public Assignment getActionAssignment_1() { return cActionAssignment_1; }
-
+		
 		//SelectWorkloadActionEnum
 		public RuleCall getActionSelectWorkloadActionEnumEnumRuleCall_1_0() { return cActionSelectWorkloadActionEnumEnumRuleCall_1_0; }
 	}
-
 	public class ActionDialogElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionDialog");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionDialog");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cDialogActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cActionAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cActionDialogActionEnumEnumRuleCall_1_0 = (RuleCall)cActionAssignment_1.eContents().get(0);
 		
 		//ActionDialog:
-		//	"dialogAction" action=DialogActionEnum;
-		public ParserRule getRule() { return rule; }
-
-		//"dialogAction" action=DialogActionEnum
+		//	'dialogAction' action=DialogActionEnum;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'dialogAction' action=DialogActionEnum
 		public Group getGroup() { return cGroup; }
-
-		//"dialogAction"
+		
+		//'dialogAction'
 		public Keyword getDialogActionKeyword_0() { return cDialogActionKeyword_0; }
-
+		
 		//action=DialogActionEnum
 		public Assignment getActionAssignment_1() { return cActionAssignment_1; }
-
+		
 		//DialogActionEnum
 		public RuleCall getActionDialogActionEnumEnumRuleCall_1_0() { return cActionDialogActionEnumEnumRuleCall_1_0; }
 	}
-
 	public class ActionReportElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionReport");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionReport");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cReportActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cActionAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cActionReportActionEnumEnumRuleCall_1_0 = (RuleCall)cActionAssignment_1.eContents().get(0);
 		
 		//ActionReport:
-		//	"reportAction" action=ReportActionEnum;
-		public ParserRule getRule() { return rule; }
-
-		//"reportAction" action=ReportActionEnum
+		//	'reportAction' action=ReportActionEnum;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'reportAction' action=ReportActionEnum
 		public Group getGroup() { return cGroup; }
-
-		//"reportAction"
+		
+		//'reportAction'
 		public Keyword getReportActionKeyword_0() { return cReportActionKeyword_0; }
-
+		
 		//action=ReportActionEnum
 		public Assignment getActionAssignment_1() { return cActionAssignment_1; }
-
+		
 		//ReportActionEnum
 		public RuleCall getActionReportActionEnumEnumRuleCall_1_0() { return cActionReportActionEnumEnumRuleCall_1_0; }
 	}
-
 	public class ActionChartElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionChart");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionChart");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cChartActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cActionAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cActionChartActionEnumEnumRuleCall_1_0 = (RuleCall)cActionAssignment_1.eContents().get(0);
 		
 		//ActionChart:
-		//	"chartAction" action=ChartActionEnum;
-		public ParserRule getRule() { return rule; }
-
-		//"chartAction" action=ChartActionEnum
+		//	'chartAction' action=ChartActionEnum;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'chartAction' action=ChartActionEnum
 		public Group getGroup() { return cGroup; }
-
-		//"chartAction"
+		
+		//'chartAction'
 		public Keyword getChartActionKeyword_0() { return cChartActionKeyword_0; }
-
+		
 		//action=ChartActionEnum
 		public Assignment getActionAssignment_1() { return cActionAssignment_1; }
-
+		
 		//ChartActionEnum
 		public RuleCall getActionChartActionEnumEnumRuleCall_1_0() { return cActionChartActionEnumEnumRuleCall_1_0; }
 	}
-
 	public class ActionWorkflowElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionWorkflow");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionWorkflow");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cWorkflowActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cActionAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cActionWorkflowActionEnumEnumRuleCall_1_0 = (RuleCall)cActionAssignment_1.eContents().get(0);
 		
 		//ActionWorkflow:
-		//	"workflowAction" action=WorkflowActionEnum;
-		public ParserRule getRule() { return rule; }
-
-		//"workflowAction" action=WorkflowActionEnum
+		//	'workflowAction' action=WorkflowActionEnum;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'workflowAction' action=WorkflowActionEnum
 		public Group getGroup() { return cGroup; }
-
-		//"workflowAction"
+		
+		//'workflowAction'
 		public Keyword getWorkflowActionKeyword_0() { return cWorkflowActionKeyword_0; }
-
+		
 		//action=WorkflowActionEnum
 		public Assignment getActionAssignment_1() { return cActionAssignment_1; }
-
+		
 		//WorkflowActionEnum
 		public RuleCall getActionWorkflowActionEnumEnumRuleCall_1_0() { return cActionWorkflowActionEnumEnumRuleCall_1_0; }
 	}
-
 	public class ActionDatainterchangeElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionDatainterchange");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionDatainterchange");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cDatainterchangeActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cActionAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -542,57 +559,281 @@
 		private final RuleCall cDataRefDataInterchangeIDTerminalRuleCall_2_0_1 = (RuleCall)cDataRefDataInterchangeCrossReference_2_0.eContents().get(1);
 		
 		//ActionDatainterchange:
-		//	"datainterchangeAction" action=DatainterchangeActionEnum dataRef=[data::DataInterchange];
-		public ParserRule getRule() { return rule; }
-
-		//"datainterchangeAction" action=DatainterchangeActionEnum dataRef=[data::DataInterchange]
+		//	'datainterchangeAction' action=DatainterchangeActionEnum dataRef=[data::DataInterchange];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'datainterchangeAction' action=DatainterchangeActionEnum dataRef=[data::DataInterchange]
 		public Group getGroup() { return cGroup; }
-
-		//"datainterchangeAction"
+		
+		//'datainterchangeAction'
 		public Keyword getDatainterchangeActionKeyword_0() { return cDatainterchangeActionKeyword_0; }
-
+		
 		//action=DatainterchangeActionEnum
 		public Assignment getActionAssignment_1() { return cActionAssignment_1; }
-
+		
 		//DatainterchangeActionEnum
 		public RuleCall getActionDatainterchangeActionEnumEnumRuleCall_1_0() { return cActionDatainterchangeActionEnumEnumRuleCall_1_0; }
-
+		
 		//dataRef=[data::DataInterchange]
 		public Assignment getDataRefAssignment_2() { return cDataRefAssignment_2; }
-
+		
 		//[data::DataInterchange]
 		public CrossReference getDataRefDataInterchangeCrossReference_2_0() { return cDataRefDataInterchangeCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getDataRefDataInterchangeIDTerminalRuleCall_2_0_1() { return cDataRefDataInterchangeIDTerminalRuleCall_2_0_1; }
 	}
-
-	public class ActionGenericElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionGeneric");
+	public class ActionUIElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionUI");
 		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Keyword cGenericActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cUserinterfaceActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cActionAssignment_1 = (Assignment)cGroup.eContents().get(1);
-		private final RuleCall cActionSTRINGTerminalRuleCall_1_0 = (RuleCall)cActionAssignment_1.eContents().get(0);
+		private final RuleCall cActionUIActionEnumEnumRuleCall_1_0 = (RuleCall)cActionAssignment_1.eContents().get(0);
 		
-		//ActionGeneric:
-		//	"genericAction" action=STRING;
-		public ParserRule getRule() { return rule; }
-
-		//"genericAction" action=STRING
+		//ActionUI:
+		//	'userinterfaceAction' action=UIActionEnum;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'userinterfaceAction' action=UIActionEnum
 		public Group getGroup() { return cGroup; }
-
-		//"genericAction"
-		public Keyword getGenericActionKeyword_0() { return cGenericActionKeyword_0; }
-
-		//action=STRING
+		
+		//'userinterfaceAction'
+		public Keyword getUserinterfaceActionKeyword_0() { return cUserinterfaceActionKeyword_0; }
+		
+		//action=UIActionEnum
 		public Assignment getActionAssignment_1() { return cActionAssignment_1; }
-
-		//STRING
-		public RuleCall getActionSTRINGTerminalRuleCall_1_0() { return cActionSTRINGTerminalRuleCall_1_0; }
+		
+		//UIActionEnum
+		public RuleCall getActionUIActionEnumEnumRuleCall_1_0() { return cActionUIActionEnumEnumRuleCall_1_0; }
 	}
-
+	public class ActionFunctionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionFunction");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFunctionalActionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cGroupKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cActionGroupAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cActionGroupFunctionLibraryActionGroupCrossReference_2_0 = (CrossReference)cActionGroupAssignment_2.eContents().get(0);
+		private final RuleCall cActionGroupFunctionLibraryActionGroupIDTerminalRuleCall_2_0_1 = (RuleCall)cActionGroupFunctionLibraryActionGroupCrossReference_2_0.eContents().get(1);
+		private final Keyword cCanExecuteKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cCanExecuteAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cCanExecuteFunctionLibraryCanExecuteCrossReference_4_0 = (CrossReference)cCanExecuteAssignment_4.eContents().get(0);
+		private final RuleCall cCanExecuteFunctionLibraryCanExecuteIDTerminalRuleCall_4_0_1 = (RuleCall)cCanExecuteFunctionLibraryCanExecuteCrossReference_4_0.eContents().get(1);
+		private final Alternatives cAlternatives_5 = (Alternatives)cGroup.eContents().get(5);
+		private final Group cGroup_5_0 = (Group)cAlternatives_5.eContents().get(0);
+		private final Assignment cHasExecuteImmediateAssignment_5_0_0 = (Assignment)cGroup_5_0.eContents().get(0);
+		private final Keyword cHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0 = (Keyword)cHasExecuteImmediateAssignment_5_0_0.eContents().get(0);
+		private final Assignment cExecuteImmediateAssignment_5_0_1 = (Assignment)cGroup_5_0.eContents().get(1);
+		private final CrossReference cExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0 = (CrossReference)cExecuteImmediateAssignment_5_0_1.eContents().get(0);
+		private final RuleCall cExecuteImmediateFunctionLibraryExecuteIDTerminalRuleCall_5_0_1_0_1 = (RuleCall)cExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0.eContents().get(1);
+		private final Group cGroup_5_0_2 = (Group)cGroup_5_0.eContents().get(2);
+		private final Assignment cHasMessageAssignment_5_0_2_0 = (Assignment)cGroup_5_0_2.eContents().get(0);
+		private final Keyword cHasMessageMessageCategoryKeyword_5_0_2_0_0 = (Keyword)cHasMessageAssignment_5_0_2_0.eContents().get(0);
+		private final Assignment cMessageCategoryAssignment_5_0_2_1 = (Assignment)cGroup_5_0_2.eContents().get(1);
+		private final CrossReference cMessageCategoryMessageCategoryCrossReference_5_0_2_1_0 = (CrossReference)cMessageCategoryAssignment_5_0_2_1.eContents().get(0);
+		private final RuleCall cMessageCategoryMessageCategoryIDTerminalRuleCall_5_0_2_1_0_1 = (RuleCall)cMessageCategoryMessageCategoryCrossReference_5_0_2_1_0.eContents().get(1);
+		private final Keyword cOnFailMessageKeyword_5_0_2_2 = (Keyword)cGroup_5_0_2.eContents().get(2);
+		private final Assignment cOnFailMessageAssignment_5_0_2_3 = (Assignment)cGroup_5_0_2.eContents().get(3);
+		private final CrossReference cOnFailMessageMessageItemCrossReference_5_0_2_3_0 = (CrossReference)cOnFailMessageAssignment_5_0_2_3.eContents().get(0);
+		private final RuleCall cOnFailMessageMessageItemIDTerminalRuleCall_5_0_2_3_0_1 = (RuleCall)cOnFailMessageMessageItemCrossReference_5_0_2_3_0.eContents().get(1);
+		private final Group cGroup_5_0_2_4 = (Group)cGroup_5_0_2.eContents().get(4);
+		private final Assignment cHasSuccessMessageAssignment_5_0_2_4_0 = (Assignment)cGroup_5_0_2_4.eContents().get(0);
+		private final Keyword cHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0 = (Keyword)cHasSuccessMessageAssignment_5_0_2_4_0.eContents().get(0);
+		private final Assignment cOnSuccessMessageAssignment_5_0_2_4_1 = (Assignment)cGroup_5_0_2_4.eContents().get(1);
+		private final CrossReference cOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0 = (CrossReference)cOnSuccessMessageAssignment_5_0_2_4_1.eContents().get(0);
+		private final RuleCall cOnSuccessMessageMessageItemIDTerminalRuleCall_5_0_2_4_1_0_1 = (RuleCall)cOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0.eContents().get(1);
+		private final Group cGroup_5_1 = (Group)cAlternatives_5.eContents().get(1);
+		private final Assignment cHasExecuteLaterAssignment_5_1_0 = (Assignment)cGroup_5_1.eContents().get(0);
+		private final Keyword cHasExecuteLaterExecuteLaterKeyword_5_1_0_0 = (Keyword)cHasExecuteLaterAssignment_5_1_0.eContents().get(0);
+		private final Assignment cExecuteLaterAssignment_5_1_1 = (Assignment)cGroup_5_1.eContents().get(1);
+		private final CrossReference cExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0 = (CrossReference)cExecuteLaterAssignment_5_1_1.eContents().get(0);
+		private final RuleCall cExecuteLaterFunctionLibraryExecuteIDTerminalRuleCall_5_1_1_0_1 = (RuleCall)cExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0.eContents().get(1);
+		private final Group cGroup_5_1_2 = (Group)cGroup_5_1.eContents().get(2);
+		private final Assignment cHasStartedMessageAssignment_5_1_2_0 = (Assignment)cGroup_5_1_2.eContents().get(0);
+		private final Keyword cHasStartedMessageMessageCategoryKeyword_5_1_2_0_0 = (Keyword)cHasStartedMessageAssignment_5_1_2_0.eContents().get(0);
+		private final Assignment cMessageCategoryAssignment_5_1_2_1 = (Assignment)cGroup_5_1_2.eContents().get(1);
+		private final CrossReference cMessageCategoryMessageCategoryCrossReference_5_1_2_1_0 = (CrossReference)cMessageCategoryAssignment_5_1_2_1.eContents().get(0);
+		private final RuleCall cMessageCategoryMessageCategoryIDTerminalRuleCall_5_1_2_1_0_1 = (RuleCall)cMessageCategoryMessageCategoryCrossReference_5_1_2_1_0.eContents().get(1);
+		private final Keyword cOnStartedMessageKeyword_5_1_2_2 = (Keyword)cGroup_5_1_2.eContents().get(2);
+		private final Assignment cOnStartedMessageAssignment_5_1_2_3 = (Assignment)cGroup_5_1_2.eContents().get(3);
+		private final CrossReference cOnStartedMessageMessageItemCrossReference_5_1_2_3_0 = (CrossReference)cOnStartedMessageAssignment_5_1_2_3.eContents().get(0);
+		private final RuleCall cOnStartedMessageMessageItemIDTerminalRuleCall_5_1_2_3_0_1 = (RuleCall)cOnStartedMessageMessageItemCrossReference_5_1_2_3_0.eContents().get(1);
+		
+		//ActionFunction:
+		//	'functionalAction'
+		//	'group' actionGroup=[func::FunctionLibraryActionGroup]
+		//	'canExecute' canExecute=[func::FunctionLibraryCanExecute] (hasExecuteImmediate?='executeImmediate'
+		//	executeImmediate=[func::FunctionLibraryExecute] (hasMessage?='messageCategory' messageCategory=[msg::MessageCategory]
+		//	'onFailMessage' onFailMessage=[msg::MessageItem] (hasSuccessMessage?='onSuccessMessage'
+		//	onSuccessMessage=[msg::MessageItem])?)?
+		//	| hasExecuteLater?='executeLater' executeLater=[func::FunctionLibraryExecute] (hasStartedMessage?='messageCategory'
+		//	messageCategory=[msg::MessageCategory]
+		//	'onStartedMessage' onStartedMessage=[msg::MessageItem])?);
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'functionalAction' 'group' actionGroup=[func::FunctionLibraryActionGroup] 'canExecute'
+		//canExecute=[func::FunctionLibraryCanExecute] (hasExecuteImmediate?='executeImmediate'
+		//executeImmediate=[func::FunctionLibraryExecute] (hasMessage?='messageCategory' messageCategory=[msg::MessageCategory]
+		//'onFailMessage' onFailMessage=[msg::MessageItem] (hasSuccessMessage?='onSuccessMessage'
+		//onSuccessMessage=[msg::MessageItem])?)? | hasExecuteLater?='executeLater' executeLater=[func::FunctionLibraryExecute]
+		//(hasStartedMessage?='messageCategory' messageCategory=[msg::MessageCategory] 'onStartedMessage'
+		//onStartedMessage=[msg::MessageItem])?)
+		public Group getGroup() { return cGroup; }
+		
+		//'functionalAction'
+		public Keyword getFunctionalActionKeyword_0() { return cFunctionalActionKeyword_0; }
+		
+		//'group'
+		public Keyword getGroupKeyword_1() { return cGroupKeyword_1; }
+		
+		//actionGroup=[func::FunctionLibraryActionGroup]
+		public Assignment getActionGroupAssignment_2() { return cActionGroupAssignment_2; }
+		
+		//[func::FunctionLibraryActionGroup]
+		public CrossReference getActionGroupFunctionLibraryActionGroupCrossReference_2_0() { return cActionGroupFunctionLibraryActionGroupCrossReference_2_0; }
+		
+		//ID
+		public RuleCall getActionGroupFunctionLibraryActionGroupIDTerminalRuleCall_2_0_1() { return cActionGroupFunctionLibraryActionGroupIDTerminalRuleCall_2_0_1; }
+		
+		//'canExecute'
+		public Keyword getCanExecuteKeyword_3() { return cCanExecuteKeyword_3; }
+		
+		//canExecute=[func::FunctionLibraryCanExecute]
+		public Assignment getCanExecuteAssignment_4() { return cCanExecuteAssignment_4; }
+		
+		//[func::FunctionLibraryCanExecute]
+		public CrossReference getCanExecuteFunctionLibraryCanExecuteCrossReference_4_0() { return cCanExecuteFunctionLibraryCanExecuteCrossReference_4_0; }
+		
+		//ID
+		public RuleCall getCanExecuteFunctionLibraryCanExecuteIDTerminalRuleCall_4_0_1() { return cCanExecuteFunctionLibraryCanExecuteIDTerminalRuleCall_4_0_1; }
+		
+		//hasExecuteImmediate?='executeImmediate' executeImmediate=[func::FunctionLibraryExecute] (hasMessage?='messageCategory'
+		//messageCategory=[msg::MessageCategory] 'onFailMessage' onFailMessage=[msg::MessageItem]
+		//(hasSuccessMessage?='onSuccessMessage' onSuccessMessage=[msg::MessageItem])?)? | hasExecuteLater?='executeLater'
+		//executeLater=[func::FunctionLibraryExecute] (hasStartedMessage?='messageCategory'
+		//messageCategory=[msg::MessageCategory] 'onStartedMessage' onStartedMessage=[msg::MessageItem])?
+		public Alternatives getAlternatives_5() { return cAlternatives_5; }
+		
+		//hasExecuteImmediate?='executeImmediate' executeImmediate=[func::FunctionLibraryExecute] (hasMessage?='messageCategory'
+		//messageCategory=[msg::MessageCategory] 'onFailMessage' onFailMessage=[msg::MessageItem]
+		//(hasSuccessMessage?='onSuccessMessage' onSuccessMessage=[msg::MessageItem])?)?
+		public Group getGroup_5_0() { return cGroup_5_0; }
+		
+		//hasExecuteImmediate?='executeImmediate'
+		public Assignment getHasExecuteImmediateAssignment_5_0_0() { return cHasExecuteImmediateAssignment_5_0_0; }
+		
+		//'executeImmediate'
+		public Keyword getHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0() { return cHasExecuteImmediateExecuteImmediateKeyword_5_0_0_0; }
+		
+		//executeImmediate=[func::FunctionLibraryExecute]
+		public Assignment getExecuteImmediateAssignment_5_0_1() { return cExecuteImmediateAssignment_5_0_1; }
+		
+		//[func::FunctionLibraryExecute]
+		public CrossReference getExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0() { return cExecuteImmediateFunctionLibraryExecuteCrossReference_5_0_1_0; }
+		
+		//ID
+		public RuleCall getExecuteImmediateFunctionLibraryExecuteIDTerminalRuleCall_5_0_1_0_1() { return cExecuteImmediateFunctionLibraryExecuteIDTerminalRuleCall_5_0_1_0_1; }
+		
+		//(hasMessage?='messageCategory' messageCategory=[msg::MessageCategory] 'onFailMessage' onFailMessage=[msg::MessageItem]
+		//(hasSuccessMessage?='onSuccessMessage' onSuccessMessage=[msg::MessageItem])?)?
+		public Group getGroup_5_0_2() { return cGroup_5_0_2; }
+		
+		//hasMessage?='messageCategory'
+		public Assignment getHasMessageAssignment_5_0_2_0() { return cHasMessageAssignment_5_0_2_0; }
+		
+		//'messageCategory'
+		public Keyword getHasMessageMessageCategoryKeyword_5_0_2_0_0() { return cHasMessageMessageCategoryKeyword_5_0_2_0_0; }
+		
+		//messageCategory=[msg::MessageCategory]
+		public Assignment getMessageCategoryAssignment_5_0_2_1() { return cMessageCategoryAssignment_5_0_2_1; }
+		
+		//[msg::MessageCategory]
+		public CrossReference getMessageCategoryMessageCategoryCrossReference_5_0_2_1_0() { return cMessageCategoryMessageCategoryCrossReference_5_0_2_1_0; }
+		
+		//ID
+		public RuleCall getMessageCategoryMessageCategoryIDTerminalRuleCall_5_0_2_1_0_1() { return cMessageCategoryMessageCategoryIDTerminalRuleCall_5_0_2_1_0_1; }
+		
+		//'onFailMessage'
+		public Keyword getOnFailMessageKeyword_5_0_2_2() { return cOnFailMessageKeyword_5_0_2_2; }
+		
+		//onFailMessage=[msg::MessageItem]
+		public Assignment getOnFailMessageAssignment_5_0_2_3() { return cOnFailMessageAssignment_5_0_2_3; }
+		
+		//[msg::MessageItem]
+		public CrossReference getOnFailMessageMessageItemCrossReference_5_0_2_3_0() { return cOnFailMessageMessageItemCrossReference_5_0_2_3_0; }
+		
+		//ID
+		public RuleCall getOnFailMessageMessageItemIDTerminalRuleCall_5_0_2_3_0_1() { return cOnFailMessageMessageItemIDTerminalRuleCall_5_0_2_3_0_1; }
+		
+		//(hasSuccessMessage?='onSuccessMessage' onSuccessMessage=[msg::MessageItem])?
+		public Group getGroup_5_0_2_4() { return cGroup_5_0_2_4; }
+		
+		//hasSuccessMessage?='onSuccessMessage'
+		public Assignment getHasSuccessMessageAssignment_5_0_2_4_0() { return cHasSuccessMessageAssignment_5_0_2_4_0; }
+		
+		//'onSuccessMessage'
+		public Keyword getHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0() { return cHasSuccessMessageOnSuccessMessageKeyword_5_0_2_4_0_0; }
+		
+		//onSuccessMessage=[msg::MessageItem]
+		public Assignment getOnSuccessMessageAssignment_5_0_2_4_1() { return cOnSuccessMessageAssignment_5_0_2_4_1; }
+		
+		//[msg::MessageItem]
+		public CrossReference getOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0() { return cOnSuccessMessageMessageItemCrossReference_5_0_2_4_1_0; }
+		
+		//ID
+		public RuleCall getOnSuccessMessageMessageItemIDTerminalRuleCall_5_0_2_4_1_0_1() { return cOnSuccessMessageMessageItemIDTerminalRuleCall_5_0_2_4_1_0_1; }
+		
+		//hasExecuteLater?='executeLater' executeLater=[func::FunctionLibraryExecute] (hasStartedMessage?='messageCategory'
+		//messageCategory=[msg::MessageCategory] 'onStartedMessage' onStartedMessage=[msg::MessageItem])?
+		public Group getGroup_5_1() { return cGroup_5_1; }
+		
+		//hasExecuteLater?='executeLater'
+		public Assignment getHasExecuteLaterAssignment_5_1_0() { return cHasExecuteLaterAssignment_5_1_0; }
+		
+		//'executeLater'
+		public Keyword getHasExecuteLaterExecuteLaterKeyword_5_1_0_0() { return cHasExecuteLaterExecuteLaterKeyword_5_1_0_0; }
+		
+		//executeLater=[func::FunctionLibraryExecute]
+		public Assignment getExecuteLaterAssignment_5_1_1() { return cExecuteLaterAssignment_5_1_1; }
+		
+		//[func::FunctionLibraryExecute]
+		public CrossReference getExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0() { return cExecuteLaterFunctionLibraryExecuteCrossReference_5_1_1_0; }
+		
+		//ID
+		public RuleCall getExecuteLaterFunctionLibraryExecuteIDTerminalRuleCall_5_1_1_0_1() { return cExecuteLaterFunctionLibraryExecuteIDTerminalRuleCall_5_1_1_0_1; }
+		
+		//(hasStartedMessage?='messageCategory' messageCategory=[msg::MessageCategory] 'onStartedMessage'
+		//onStartedMessage=[msg::MessageItem])?
+		public Group getGroup_5_1_2() { return cGroup_5_1_2; }
+		
+		//hasStartedMessage?='messageCategory'
+		public Assignment getHasStartedMessageAssignment_5_1_2_0() { return cHasStartedMessageAssignment_5_1_2_0; }
+		
+		//'messageCategory'
+		public Keyword getHasStartedMessageMessageCategoryKeyword_5_1_2_0_0() { return cHasStartedMessageMessageCategoryKeyword_5_1_2_0_0; }
+		
+		//messageCategory=[msg::MessageCategory]
+		public Assignment getMessageCategoryAssignment_5_1_2_1() { return cMessageCategoryAssignment_5_1_2_1; }
+		
+		//[msg::MessageCategory]
+		public CrossReference getMessageCategoryMessageCategoryCrossReference_5_1_2_1_0() { return cMessageCategoryMessageCategoryCrossReference_5_1_2_1_0; }
+		
+		//ID
+		public RuleCall getMessageCategoryMessageCategoryIDTerminalRuleCall_5_1_2_1_0_1() { return cMessageCategoryMessageCategoryIDTerminalRuleCall_5_1_2_1_0_1; }
+		
+		//'onStartedMessage'
+		public Keyword getOnStartedMessageKeyword_5_1_2_2() { return cOnStartedMessageKeyword_5_1_2_2; }
+		
+		//onStartedMessage=[msg::MessageItem]
+		public Assignment getOnStartedMessageAssignment_5_1_2_3() { return cOnStartedMessageAssignment_5_1_2_3; }
+		
+		//[msg::MessageItem]
+		public CrossReference getOnStartedMessageMessageItemCrossReference_5_1_2_3_0() { return cOnStartedMessageMessageItemCrossReference_5_1_2_3_0; }
+		
+		//ID
+		public RuleCall getOnStartedMessageMessageItemIDTerminalRuleCall_5_1_2_3_0_1() { return cOnStartedMessageMessageItemIDTerminalRuleCall_5_1_2_3_0_1; }
+	}
 	public class ActionParameterElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionParameter");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ActionParameter");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cActionParameterAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cParameterKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -601,167 +842,52 @@
 		private final RuleCall cParameterFunctionLibraryParameterIDTerminalRuleCall_2_0_1 = (RuleCall)cParameterFunctionLibraryParameterCrossReference_2_0.eContents().get(1);
 		
 		//ActionParameter:
-		//	{ActionParameter} "parameter" parameter=[func::FunctionLibraryParameter];
-		public ParserRule getRule() { return rule; }
-
-		//{ActionParameter} "parameter" parameter=[func::FunctionLibraryParameter]
+		//	{ActionParameter} 'parameter' parameter=[func::FunctionLibraryParameter];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ActionParameter} 'parameter' parameter=[func::FunctionLibraryParameter]
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ActionParameter}
 		public Action getActionParameterAction_0() { return cActionParameterAction_0; }
-
-		//"parameter"
+		
+		//'parameter'
 		public Keyword getParameterKeyword_1() { return cParameterKeyword_1; }
-
+		
 		//parameter=[func::FunctionLibraryParameter]
 		public Assignment getParameterAssignment_2() { return cParameterAssignment_2; }
-
+		
 		//[func::FunctionLibraryParameter]
 		public CrossReference getParameterFunctionLibraryParameterCrossReference_2_0() { return cParameterFunctionLibraryParameterCrossReference_2_0; }
-
+		
 		//ID
 		public RuleCall getParameterFunctionLibraryParameterIDTerminalRuleCall_2_0_1() { return cParameterFunctionLibraryParameterIDTerminalRuleCall_2_0_1; }
 	}
-
-	public class ActionImportElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionImport");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Keyword cImportKeyword_0 = (Keyword)cGroup.eContents().get(0);
-		private final Assignment cImportedNamespaceAssignment_1 = (Assignment)cGroup.eContents().get(1);
-		private final RuleCall cImportedNamespaceActionQualifiedNameWithWildCardParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
-		
-		//ActionImport returns types::LImport:
-		//	"import" importedNamespace=ActionQualifiedNameWithWildCard;
-		public ParserRule getRule() { return rule; }
-
-		//"import" importedNamespace=ActionQualifiedNameWithWildCard
-		public Group getGroup() { return cGroup; }
-
-		//"import"
-		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
-
-		//importedNamespace=ActionQualifiedNameWithWildCard
-		public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
-
-		//ActionQualifiedNameWithWildCard
-		public RuleCall getImportedNamespaceActionQualifiedNameWithWildCardParserRuleCall_1_0() { return cImportedNamespaceActionQualifiedNameWithWildCardParserRuleCall_1_0; }
-	}
-
-	public class SignedNumberElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SignedNumber");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
-		private final RuleCall cNumberParserRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
-		
-		//SignedNumber returns ecore::EDouble:
-		//	"-"? Number;
-		public ParserRule getRule() { return rule; }
-
-		//"-"? Number
-		public Group getGroup() { return cGroup; }
-
-		//"-"?
-		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
-
-		//Number
-		public RuleCall getNumberParserRuleCall_1() { return cNumberParserRuleCall_1; }
-	}
-
-	public class ActionQualifiedNameWithWildCardElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ActionQualifiedNameWithWildCard");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final RuleCall cQualifiedNameParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
-		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
-		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
-		private final Keyword cAsteriskKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
-		
-		//ActionQualifiedNameWithWildCard:
-		//	QualifiedName ("." "*")?;
-		public ParserRule getRule() { return rule; }
-
-		//QualifiedName ("." "*")?
-		public Group getGroup() { return cGroup; }
-
-		//QualifiedName
-		public RuleCall getQualifiedNameParserRuleCall_0() { return cQualifiedNameParserRuleCall_0; }
-
-		//("." "*")?
-		public Group getGroup_1() { return cGroup_1; }
-
-		//"."
-		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
-
-		//"*"
-		public Keyword getAsteriskKeyword_1_1() { return cAsteriskKeyword_1_1; }
-	}
-
-	public class QualifiedNameElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QualifiedName");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final RuleCall cValidIDParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
-		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
-		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
-		private final RuleCall cValidIDParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
-		
-		//QualifiedName:
-		//	ValidID ("." ValidID)*;
-		public ParserRule getRule() { return rule; }
-
-		//ValidID ("." ValidID)*
-		public Group getGroup() { return cGroup; }
-
-		//ValidID
-		public RuleCall getValidIDParserRuleCall_0() { return cValidIDParserRuleCall_0; }
-
-		//(=> "." ValidID)*
-		public Group getGroup_1() { return cGroup_1; }
-
-		//=> "."
-		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
-
-		//ValidID
-		public RuleCall getValidIDParserRuleCall_1_1() { return cValidIDParserRuleCall_1_1; }
-	}
-
-	public class ValidIDElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidID");
-		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
-		
-		//ValidID:
-		//	ID;
-		public ParserRule getRule() { return rule; }
-
-		//ID
-		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
-	}
-
 	public class TRANSLATABLEIDElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLEID");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLEID");
 		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
 		//TRANSLATABLEID:
 		//	ID;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
 		//ID
 		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
 	}
-
 	public class TRANSLATABLESTRINGElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLESTRING");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.TRANSLATABLESTRING");
 		private final RuleCall cSTRINGTerminalRuleCall = (RuleCall)rule.eContents().get(1);
 		
 		//TRANSLATABLESTRING:
 		//	STRING;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
 		//STRING
 		public RuleCall getSTRINGTerminalRuleCall() { return cSTRINGTerminalRuleCall; }
 	}
 	
-	
 	public class TaskActionEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "TaskActionEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.TaskActionEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cTASK_ACTION_CLAIMEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cTASK_ACTION_CLAIMClaimKeyword_0_0 = (Keyword)cTASK_ACTION_CLAIMEnumLiteralDeclaration_0.eContents().get(0);
@@ -795,113 +921,114 @@
 		private final Keyword cTASK_ACTION_EXITExitKeyword_14_0 = (Keyword)cTASK_ACTION_EXITEnumLiteralDeclaration_14.eContents().get(0);
 		
 		//enum TaskActionEnum:
-		//	TASK_ACTION_CLAIM="Claim" | TASK_ACTION_START="Start" | TASK_ACTION_STOP="Stop" | TASK_ACTION_RELEASE="Release" |
-		//	TASK_ACTION_SUSPEND="Suspend" | TASK_ACTION_RESUME="Resume" | TASK_ACTION_SKIP="Skip" |
-		//	TASK_ACTION_COMPLETE="Complete" | TASK_ACTION_DELEGATE="Delegate" | TASK_ACTION_FORWARD="Forward" |
-		//	TASK_ACTION_FAIL="Fail" | TASK_ACTION_REGISTER="Register" | TASK_ACTION_REMOVE="Remove" |
-		//	TASK_ACTION_ACTIVATE="Activate" | TASK_ACTION_EXIT="Exit";
+		//	TASK_ACTION_CLAIM='Claim' | TASK_ACTION_START='Start' | TASK_ACTION_STOP='Stop' | TASK_ACTION_RELEASE='Release' |
+		//	TASK_ACTION_SUSPEND='Suspend' |
+		//	TASK_ACTION_RESUME='Resume' | TASK_ACTION_SKIP='Skip' | TASK_ACTION_COMPLETE='Complete' |
+		//	TASK_ACTION_DELEGATE='Delegate' |
+		//	TASK_ACTION_FORWARD='Forward' | TASK_ACTION_FAIL='Fail' | TASK_ACTION_REGISTER='Register' |
+		//	TASK_ACTION_REMOVE='Remove' |
+		//	TASK_ACTION_ACTIVATE='Activate' | TASK_ACTION_EXIT='Exit';
 		public EnumRule getRule() { return rule; }
-
-		//TASK_ACTION_CLAIM="Claim" | TASK_ACTION_START="Start" | TASK_ACTION_STOP="Stop" | TASK_ACTION_RELEASE="Release" |
-		//TASK_ACTION_SUSPEND="Suspend" | TASK_ACTION_RESUME="Resume" | TASK_ACTION_SKIP="Skip" |
-		//TASK_ACTION_COMPLETE="Complete" | TASK_ACTION_DELEGATE="Delegate" | TASK_ACTION_FORWARD="Forward" |
-		//TASK_ACTION_FAIL="Fail" | TASK_ACTION_REGISTER="Register" | TASK_ACTION_REMOVE="Remove" |
-		//TASK_ACTION_ACTIVATE="Activate" | TASK_ACTION_EXIT="Exit"
+		
+		//TASK_ACTION_CLAIM='Claim' | TASK_ACTION_START='Start' | TASK_ACTION_STOP='Stop' | TASK_ACTION_RELEASE='Release' |
+		//TASK_ACTION_SUSPEND='Suspend' | TASK_ACTION_RESUME='Resume' | TASK_ACTION_SKIP='Skip' | TASK_ACTION_COMPLETE='Complete'
+		//| TASK_ACTION_DELEGATE='Delegate' | TASK_ACTION_FORWARD='Forward' | TASK_ACTION_FAIL='Fail' |
+		//TASK_ACTION_REGISTER='Register' | TASK_ACTION_REMOVE='Remove' | TASK_ACTION_ACTIVATE='Activate' |
+		//TASK_ACTION_EXIT='Exit'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//TASK_ACTION_CLAIM="Claim"
+		
+		//TASK_ACTION_CLAIM='Claim'
 		public EnumLiteralDeclaration getTASK_ACTION_CLAIMEnumLiteralDeclaration_0() { return cTASK_ACTION_CLAIMEnumLiteralDeclaration_0; }
-
-		//"Claim"
+		
+		//'Claim'
 		public Keyword getTASK_ACTION_CLAIMClaimKeyword_0_0() { return cTASK_ACTION_CLAIMClaimKeyword_0_0; }
-
-		//TASK_ACTION_START="Start"
+		
+		//TASK_ACTION_START='Start'
 		public EnumLiteralDeclaration getTASK_ACTION_STARTEnumLiteralDeclaration_1() { return cTASK_ACTION_STARTEnumLiteralDeclaration_1; }
-
-		//"Start"
+		
+		//'Start'
 		public Keyword getTASK_ACTION_STARTStartKeyword_1_0() { return cTASK_ACTION_STARTStartKeyword_1_0; }
-
-		//TASK_ACTION_STOP="Stop"
+		
+		//TASK_ACTION_STOP='Stop'
 		public EnumLiteralDeclaration getTASK_ACTION_STOPEnumLiteralDeclaration_2() { return cTASK_ACTION_STOPEnumLiteralDeclaration_2; }
-
-		//"Stop"
+		
+		//'Stop'
 		public Keyword getTASK_ACTION_STOPStopKeyword_2_0() { return cTASK_ACTION_STOPStopKeyword_2_0; }
-
-		//TASK_ACTION_RELEASE="Release"
+		
+		//TASK_ACTION_RELEASE='Release'
 		public EnumLiteralDeclaration getTASK_ACTION_RELEASEEnumLiteralDeclaration_3() { return cTASK_ACTION_RELEASEEnumLiteralDeclaration_3; }
-
-		//"Release"
+		
+		//'Release'
 		public Keyword getTASK_ACTION_RELEASEReleaseKeyword_3_0() { return cTASK_ACTION_RELEASEReleaseKeyword_3_0; }
-
-		//TASK_ACTION_SUSPEND="Suspend"
+		
+		//TASK_ACTION_SUSPEND='Suspend'
 		public EnumLiteralDeclaration getTASK_ACTION_SUSPENDEnumLiteralDeclaration_4() { return cTASK_ACTION_SUSPENDEnumLiteralDeclaration_4; }
-
-		//"Suspend"
+		
+		//'Suspend'
 		public Keyword getTASK_ACTION_SUSPENDSuspendKeyword_4_0() { return cTASK_ACTION_SUSPENDSuspendKeyword_4_0; }
-
-		//TASK_ACTION_RESUME="Resume"
+		
+		//TASK_ACTION_RESUME='Resume'
 		public EnumLiteralDeclaration getTASK_ACTION_RESUMEEnumLiteralDeclaration_5() { return cTASK_ACTION_RESUMEEnumLiteralDeclaration_5; }
-
-		//"Resume"
+		
+		//'Resume'
 		public Keyword getTASK_ACTION_RESUMEResumeKeyword_5_0() { return cTASK_ACTION_RESUMEResumeKeyword_5_0; }
-
-		//TASK_ACTION_SKIP="Skip"
+		
+		//TASK_ACTION_SKIP='Skip'
 		public EnumLiteralDeclaration getTASK_ACTION_SKIPEnumLiteralDeclaration_6() { return cTASK_ACTION_SKIPEnumLiteralDeclaration_6; }
-
-		//"Skip"
+		
+		//'Skip'
 		public Keyword getTASK_ACTION_SKIPSkipKeyword_6_0() { return cTASK_ACTION_SKIPSkipKeyword_6_0; }
-
-		//TASK_ACTION_COMPLETE="Complete"
+		
+		//TASK_ACTION_COMPLETE='Complete'
 		public EnumLiteralDeclaration getTASK_ACTION_COMPLETEEnumLiteralDeclaration_7() { return cTASK_ACTION_COMPLETEEnumLiteralDeclaration_7; }
-
-		//"Complete"
+		
+		//'Complete'
 		public Keyword getTASK_ACTION_COMPLETECompleteKeyword_7_0() { return cTASK_ACTION_COMPLETECompleteKeyword_7_0; }
-
-		//TASK_ACTION_DELEGATE="Delegate"
+		
+		//TASK_ACTION_DELEGATE='Delegate'
 		public EnumLiteralDeclaration getTASK_ACTION_DELEGATEEnumLiteralDeclaration_8() { return cTASK_ACTION_DELEGATEEnumLiteralDeclaration_8; }
-
-		//"Delegate"
+		
+		//'Delegate'
 		public Keyword getTASK_ACTION_DELEGATEDelegateKeyword_8_0() { return cTASK_ACTION_DELEGATEDelegateKeyword_8_0; }
-
-		//TASK_ACTION_FORWARD="Forward"
+		
+		//TASK_ACTION_FORWARD='Forward'
 		public EnumLiteralDeclaration getTASK_ACTION_FORWARDEnumLiteralDeclaration_9() { return cTASK_ACTION_FORWARDEnumLiteralDeclaration_9; }
-
-		//"Forward"
+		
+		//'Forward'
 		public Keyword getTASK_ACTION_FORWARDForwardKeyword_9_0() { return cTASK_ACTION_FORWARDForwardKeyword_9_0; }
-
-		//TASK_ACTION_FAIL="Fail"
+		
+		//TASK_ACTION_FAIL='Fail'
 		public EnumLiteralDeclaration getTASK_ACTION_FAILEnumLiteralDeclaration_10() { return cTASK_ACTION_FAILEnumLiteralDeclaration_10; }
-
-		//"Fail"
+		
+		//'Fail'
 		public Keyword getTASK_ACTION_FAILFailKeyword_10_0() { return cTASK_ACTION_FAILFailKeyword_10_0; }
-
-		//TASK_ACTION_REGISTER="Register"
+		
+		//TASK_ACTION_REGISTER='Register'
 		public EnumLiteralDeclaration getTASK_ACTION_REGISTEREnumLiteralDeclaration_11() { return cTASK_ACTION_REGISTEREnumLiteralDeclaration_11; }
-
-		//"Register"
+		
+		//'Register'
 		public Keyword getTASK_ACTION_REGISTERRegisterKeyword_11_0() { return cTASK_ACTION_REGISTERRegisterKeyword_11_0; }
-
-		//TASK_ACTION_REMOVE="Remove"
+		
+		//TASK_ACTION_REMOVE='Remove'
 		public EnumLiteralDeclaration getTASK_ACTION_REMOVEEnumLiteralDeclaration_12() { return cTASK_ACTION_REMOVEEnumLiteralDeclaration_12; }
-
-		//"Remove"
+		
+		//'Remove'
 		public Keyword getTASK_ACTION_REMOVERemoveKeyword_12_0() { return cTASK_ACTION_REMOVERemoveKeyword_12_0; }
-
-		//TASK_ACTION_ACTIVATE="Activate"
+		
+		//TASK_ACTION_ACTIVATE='Activate'
 		public EnumLiteralDeclaration getTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13() { return cTASK_ACTION_ACTIVATEEnumLiteralDeclaration_13; }
-
-		//"Activate"
+		
+		//'Activate'
 		public Keyword getTASK_ACTION_ACTIVATEActivateKeyword_13_0() { return cTASK_ACTION_ACTIVATEActivateKeyword_13_0; }
-
-		//TASK_ACTION_EXIT="Exit"
+		
+		//TASK_ACTION_EXIT='Exit'
 		public EnumLiteralDeclaration getTASK_ACTION_EXITEnumLiteralDeclaration_14() { return cTASK_ACTION_EXITEnumLiteralDeclaration_14; }
-
-		//"Exit"
+		
+		//'Exit'
 		public Keyword getTASK_ACTION_EXITExitKeyword_14_0() { return cTASK_ACTION_EXITExitKeyword_14_0; }
 	}
-
 	public class SelectWorkloadActionEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "SelectWorkloadActionEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.SelectWorkloadActionEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cWORKLOAD_SELECT_ACTION_REMOVE_ALLRemoveAllKeyword_0_0 = (Keyword)cWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0.eContents().get(0);
@@ -909,27 +1036,26 @@
 		private final Keyword cWORKLOAD_SELECT_ACTION_ADD_ALLAddAllKeyword_1_0 = (Keyword)cWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1.eContents().get(0);
 		
 		//enum SelectWorkloadActionEnum:
-		//	WORKLOAD_SELECT_ACTION_REMOVE_ALL="RemoveAll" | WORKLOAD_SELECT_ACTION_ADD_ALL="AddAll";
+		//	WORKLOAD_SELECT_ACTION_REMOVE_ALL='RemoveAll' | WORKLOAD_SELECT_ACTION_ADD_ALL='AddAll';
 		public EnumRule getRule() { return rule; }
-
-		//WORKLOAD_SELECT_ACTION_REMOVE_ALL="RemoveAll" | WORKLOAD_SELECT_ACTION_ADD_ALL="AddAll"
+		
+		//WORKLOAD_SELECT_ACTION_REMOVE_ALL='RemoveAll' | WORKLOAD_SELECT_ACTION_ADD_ALL='AddAll'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//WORKLOAD_SELECT_ACTION_REMOVE_ALL="RemoveAll"
+		
+		//WORKLOAD_SELECT_ACTION_REMOVE_ALL='RemoveAll'
 		public EnumLiteralDeclaration getWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0() { return cWORKLOAD_SELECT_ACTION_REMOVE_ALLEnumLiteralDeclaration_0; }
-
-		//"RemoveAll"
+		
+		//'RemoveAll'
 		public Keyword getWORKLOAD_SELECT_ACTION_REMOVE_ALLRemoveAllKeyword_0_0() { return cWORKLOAD_SELECT_ACTION_REMOVE_ALLRemoveAllKeyword_0_0; }
-
-		//WORKLOAD_SELECT_ACTION_ADD_ALL="AddAll"
+		
+		//WORKLOAD_SELECT_ACTION_ADD_ALL='AddAll'
 		public EnumLiteralDeclaration getWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1() { return cWORKLOAD_SELECT_ACTION_ADD_ALLEnumLiteralDeclaration_1; }
-
-		//"AddAll"
+		
+		//'AddAll'
 		public Keyword getWORKLOAD_SELECT_ACTION_ADD_ALLAddAllKeyword_1_0() { return cWORKLOAD_SELECT_ACTION_ADD_ALLAddAllKeyword_1_0; }
 	}
-
 	public class DialogActionEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "DialogActionEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.DialogActionEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cDIALOG_ACTION_NEWEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cDIALOG_ACTION_NEWNewKeyword_0_0 = (Keyword)cDIALOG_ACTION_NEWEnumLiteralDeclaration_0.eContents().get(0);
@@ -941,39 +1067,38 @@
 		private final Keyword cDIALOG_ACTION_CANCELCancelKeyword_3_0 = (Keyword)cDIALOG_ACTION_CANCELEnumLiteralDeclaration_3.eContents().get(0);
 		
 		//enum DialogActionEnum:
-		//	DIALOG_ACTION_NEW="New" | DIALOG_ACTION_SAVE="Save" | DIALOG_ACTION_DELETE="Delete" | DIALOG_ACTION_CANCEL="Cancel";
+		//	DIALOG_ACTION_NEW='New' | DIALOG_ACTION_SAVE='Save' | DIALOG_ACTION_DELETE='Delete' | DIALOG_ACTION_CANCEL='Cancel';
 		public EnumRule getRule() { return rule; }
-
-		//DIALOG_ACTION_NEW="New" | DIALOG_ACTION_SAVE="Save" | DIALOG_ACTION_DELETE="Delete" | DIALOG_ACTION_CANCEL="Cancel"
+		
+		//DIALOG_ACTION_NEW='New' | DIALOG_ACTION_SAVE='Save' | DIALOG_ACTION_DELETE='Delete' | DIALOG_ACTION_CANCEL='Cancel'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//DIALOG_ACTION_NEW="New"
+		
+		//DIALOG_ACTION_NEW='New'
 		public EnumLiteralDeclaration getDIALOG_ACTION_NEWEnumLiteralDeclaration_0() { return cDIALOG_ACTION_NEWEnumLiteralDeclaration_0; }
-
-		//"New"
+		
+		//'New'
 		public Keyword getDIALOG_ACTION_NEWNewKeyword_0_0() { return cDIALOG_ACTION_NEWNewKeyword_0_0; }
-
-		//DIALOG_ACTION_SAVE="Save"
+		
+		//DIALOG_ACTION_SAVE='Save'
 		public EnumLiteralDeclaration getDIALOG_ACTION_SAVEEnumLiteralDeclaration_1() { return cDIALOG_ACTION_SAVEEnumLiteralDeclaration_1; }
-
-		//"Save"
+		
+		//'Save'
 		public Keyword getDIALOG_ACTION_SAVESaveKeyword_1_0() { return cDIALOG_ACTION_SAVESaveKeyword_1_0; }
-
-		//DIALOG_ACTION_DELETE="Delete"
+		
+		//DIALOG_ACTION_DELETE='Delete'
 		public EnumLiteralDeclaration getDIALOG_ACTION_DELETEEnumLiteralDeclaration_2() { return cDIALOG_ACTION_DELETEEnumLiteralDeclaration_2; }
-
-		//"Delete"
+		
+		//'Delete'
 		public Keyword getDIALOG_ACTION_DELETEDeleteKeyword_2_0() { return cDIALOG_ACTION_DELETEDeleteKeyword_2_0; }
-
-		//DIALOG_ACTION_CANCEL="Cancel"
+		
+		//DIALOG_ACTION_CANCEL='Cancel'
 		public EnumLiteralDeclaration getDIALOG_ACTION_CANCELEnumLiteralDeclaration_3() { return cDIALOG_ACTION_CANCELEnumLiteralDeclaration_3; }
-
-		//"Cancel"
+		
+		//'Cancel'
 		public Keyword getDIALOG_ACTION_CANCELCancelKeyword_3_0() { return cDIALOG_ACTION_CANCELCancelKeyword_3_0; }
 	}
-
 	public class ReportActionEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "ReportActionEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ReportActionEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cREPORT_ACTION_PRINT_ON_SERVER_PDFPrintOnServerKeyword_0_0 = (Keyword)cREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0.eContents().get(0);
@@ -981,59 +1106,56 @@
 		private final Keyword cREPORT_ACTION_DOWNLOAD_PDFDownloadKeyword_1_0 = (Keyword)cREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1.eContents().get(0);
 		
 		//enum ReportActionEnum:
-		//	REPORT_ACTION_PRINT_ON_SERVER_PDF="PrintOnServer" | REPORT_ACTION_DOWNLOAD_PDF="Download";
+		//	REPORT_ACTION_PRINT_ON_SERVER_PDF='PrintOnServer' | REPORT_ACTION_DOWNLOAD_PDF='Download';
 		public EnumRule getRule() { return rule; }
-
-		//REPORT_ACTION_PRINT_ON_SERVER_PDF="PrintOnServer" | REPORT_ACTION_DOWNLOAD_PDF="Download"
+		
+		//REPORT_ACTION_PRINT_ON_SERVER_PDF='PrintOnServer' | REPORT_ACTION_DOWNLOAD_PDF='Download'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//REPORT_ACTION_PRINT_ON_SERVER_PDF="PrintOnServer"
+		
+		//REPORT_ACTION_PRINT_ON_SERVER_PDF='PrintOnServer'
 		public EnumLiteralDeclaration getREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0() { return cREPORT_ACTION_PRINT_ON_SERVER_PDFEnumLiteralDeclaration_0; }
-
-		//"PrintOnServer"
+		
+		//'PrintOnServer'
 		public Keyword getREPORT_ACTION_PRINT_ON_SERVER_PDFPrintOnServerKeyword_0_0() { return cREPORT_ACTION_PRINT_ON_SERVER_PDFPrintOnServerKeyword_0_0; }
-
-		//REPORT_ACTION_DOWNLOAD_PDF="Download"
+		
+		//REPORT_ACTION_DOWNLOAD_PDF='Download'
 		public EnumLiteralDeclaration getREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1() { return cREPORT_ACTION_DOWNLOAD_PDFEnumLiteralDeclaration_1; }
-
-		//"Download"
+		
+		//'Download'
 		public Keyword getREPORT_ACTION_DOWNLOAD_PDFDownloadKeyword_1_0() { return cREPORT_ACTION_DOWNLOAD_PDFDownloadKeyword_1_0; }
 	}
-
 	public class ChartActionEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "ChartActionEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.ChartActionEnum");
 		private final EnumLiteralDeclaration cCHART_ACTION_DOWNLOADEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cCHART_ACTION_DOWNLOADDownloadKeyword_0 = (Keyword)cCHART_ACTION_DOWNLOADEnumLiteralDeclaration.eContents().get(0);
 		
 		//enum ChartActionEnum:
-		//	CHART_ACTION_DOWNLOAD="Download";
+		//	CHART_ACTION_DOWNLOAD='Download';
 		public EnumRule getRule() { return rule; }
-
-		//CHART_ACTION_DOWNLOAD="Download"
+		
+		//CHART_ACTION_DOWNLOAD='Download'
 		public EnumLiteralDeclaration getCHART_ACTION_DOWNLOADEnumLiteralDeclaration() { return cCHART_ACTION_DOWNLOADEnumLiteralDeclaration; }
-
-		//"Download"
+		
+		//'Download'
 		public Keyword getCHART_ACTION_DOWNLOADDownloadKeyword_0() { return cCHART_ACTION_DOWNLOADDownloadKeyword_0; }
 	}
-
 	public class WorkflowActionEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "WorkflowActionEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.WorkflowActionEnum");
 		private final EnumLiteralDeclaration cWORKFLOW_ACTION_STARTEnumLiteralDeclaration = (EnumLiteralDeclaration)rule.eContents().get(1);
 		private final Keyword cWORKFLOW_ACTION_STARTStartKeyword_0 = (Keyword)cWORKFLOW_ACTION_STARTEnumLiteralDeclaration.eContents().get(0);
 		
 		//enum WorkflowActionEnum:
-		//	WORKFLOW_ACTION_START="Start";
+		//	WORKFLOW_ACTION_START='Start';
 		public EnumRule getRule() { return rule; }
-
-		//WORKFLOW_ACTION_START="Start"
+		
+		//WORKFLOW_ACTION_START='Start'
 		public EnumLiteralDeclaration getWORKFLOW_ACTION_STARTEnumLiteralDeclaration() { return cWORKFLOW_ACTION_STARTEnumLiteralDeclaration; }
-
-		//"Start"
+		
+		//'Start'
 		public Keyword getWORKFLOW_ACTION_STARTStartKeyword_0() { return cWORKFLOW_ACTION_STARTStartKeyword_0; }
 	}
-
 	public class DatainterchangeActionEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "DatainterchangeActionEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.DatainterchangeActionEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cDATAINTERCHANGE_ACTION_IMPORTImportKeyword_0_0 = (Keyword)cDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0.eContents().get(0);
@@ -1041,27 +1163,56 @@
 		private final Keyword cDATAINTERCHANGE_ACTION_EXPORTExportKeyword_1_0 = (Keyword)cDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1.eContents().get(0);
 		
 		//enum DatainterchangeActionEnum:
-		//	DATAINTERCHANGE_ACTION_IMPORT="Import" | DATAINTERCHANGE_ACTION_EXPORT="Export";
+		//	DATAINTERCHANGE_ACTION_IMPORT='Import' | DATAINTERCHANGE_ACTION_EXPORT='Export';
 		public EnumRule getRule() { return rule; }
-
-		//DATAINTERCHANGE_ACTION_IMPORT="Import" | DATAINTERCHANGE_ACTION_EXPORT="Export"
+		
+		//DATAINTERCHANGE_ACTION_IMPORT='Import' | DATAINTERCHANGE_ACTION_EXPORT='Export'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//DATAINTERCHANGE_ACTION_IMPORT="Import"
+		
+		//DATAINTERCHANGE_ACTION_IMPORT='Import'
 		public EnumLiteralDeclaration getDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0() { return cDATAINTERCHANGE_ACTION_IMPORTEnumLiteralDeclaration_0; }
-
-		//"Import"
+		
+		//'Import'
 		public Keyword getDATAINTERCHANGE_ACTION_IMPORTImportKeyword_0_0() { return cDATAINTERCHANGE_ACTION_IMPORTImportKeyword_0_0; }
-
-		//DATAINTERCHANGE_ACTION_EXPORT="Export"
+		
+		//DATAINTERCHANGE_ACTION_EXPORT='Export'
 		public EnumLiteralDeclaration getDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1() { return cDATAINTERCHANGE_ACTION_EXPORTEnumLiteralDeclaration_1; }
-
-		//"Export"
+		
+		//'Export'
 		public Keyword getDATAINTERCHANGE_ACTION_EXPORTExportKeyword_1_0() { return cDATAINTERCHANGE_ACTION_EXPORTExportKeyword_1_0; }
 	}
+	public class UIActionEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.action.ActionDSL.UIActionEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cNEXT_PARTEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cNEXT_PARTNextPartKeyword_0_0 = (Keyword)cNEXT_PARTEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cPREVIOUS_PARTEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cPREVIOUS_PARTPreviousPartKeyword_1_0 = (Keyword)cPREVIOUS_PARTEnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum UIActionEnum:
+		//	NEXT_PART='NextPart' |
+		//	PREVIOUS_PART='PreviousPart';
+		public EnumRule getRule() { return rule; }
+		
+		//NEXT_PART='NextPart' | PREVIOUS_PART='PreviousPart'
+		public Alternatives getAlternatives() { return cAlternatives; }
+		
+		//NEXT_PART='NextPart'
+		public EnumLiteralDeclaration getNEXT_PARTEnumLiteralDeclaration_0() { return cNEXT_PARTEnumLiteralDeclaration_0; }
+		
+		//'NextPart'
+		public Keyword getNEXT_PARTNextPartKeyword_0_0() { return cNEXT_PARTNextPartKeyword_0_0; }
+		
+		//PREVIOUS_PART='PreviousPart'
+		public EnumLiteralDeclaration getPREVIOUS_PARTEnumLiteralDeclaration_1() { return cPREVIOUS_PARTEnumLiteralDeclaration_1; }
+		
+		//'PreviousPart'
+		public Keyword getPREVIOUS_PARTPreviousPartKeyword_1_0() { return cPREVIOUS_PARTPreviousPartKeyword_1_0; }
+	}
 	
 	private final ActionModelElements pActionModel;
 	private final ActionPackageElements pActionPackage;
+	private final ActionCommandElements pActionCommand;
 	private final ActionToolbarElements pActionToolbar;
 	private final ActionButtonElements pActionButton;
 	private final ActionTypeElements pActionType;
@@ -1072,34 +1223,44 @@
 	private final ActionChartElements pActionChart;
 	private final ActionWorkflowElements pActionWorkflow;
 	private final ActionDatainterchangeElements pActionDatainterchange;
-	private final ActionGenericElements pActionGeneric;
+	private final ActionUIElements pActionUI;
+	private final ActionFunctionElements pActionFunction;
 	private final ActionParameterElements pActionParameter;
-	private final ActionImportElements pActionImport;
-	private final SignedNumberElements pSignedNumber;
-	private final ActionQualifiedNameWithWildCardElements pActionQualifiedNameWithWildCard;
-	private final QualifiedNameElements pQualifiedName;
-	private final ValidIDElements pValidID;
 	private final TRANSLATABLEIDElements pTRANSLATABLEID;
 	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
-	private final TaskActionEnumElements unknownRuleTaskActionEnum;
-	private final SelectWorkloadActionEnumElements unknownRuleSelectWorkloadActionEnum;
-	private final DialogActionEnumElements unknownRuleDialogActionEnum;
-	private final ReportActionEnumElements unknownRuleReportActionEnum;
-	private final ChartActionEnumElements unknownRuleChartActionEnum;
-	private final WorkflowActionEnumElements unknownRuleWorkflowActionEnum;
-	private final DatainterchangeActionEnumElements unknownRuleDatainterchangeActionEnum;
+	private final TaskActionEnumElements eTaskActionEnum;
+	private final SelectWorkloadActionEnumElements eSelectWorkloadActionEnum;
+	private final DialogActionEnumElements eDialogActionEnum;
+	private final ReportActionEnumElements eReportActionEnum;
+	private final ChartActionEnumElements eChartActionEnum;
+	private final WorkflowActionEnumElements eWorkflowActionEnum;
+	private final DatainterchangeActionEnumElements eDatainterchangeActionEnum;
+	private final UIActionEnumElements eUIActionEnum;
 	
 	private final Grammar grammar;
-
+	
+	private final OXtypeGrammarAccess gaOXtype;
+	
 	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+	
+	private final XbaseGrammarAccess gaXbase;
+	
+	private final XtypeGrammarAccess gaXtype;
 
 	@Inject
 	public ActionDSLGrammarAccess(GrammarProvider grammarProvider,
-		XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations) {
+			OXtypeGrammarAccess gaOXtype,
+			XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations,
+			XbaseGrammarAccess gaXbase,
+			XtypeGrammarAccess gaXtype) {
 		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaOXtype = gaOXtype;
 		this.gaXbaseWithAnnotations = gaXbaseWithAnnotations;
+		this.gaXbase = gaXbase;
+		this.gaXtype = gaXtype;
 		this.pActionModel = new ActionModelElements();
 		this.pActionPackage = new ActionPackageElements();
+		this.pActionCommand = new ActionCommandElements();
 		this.pActionToolbar = new ActionToolbarElements();
 		this.pActionButton = new ActionButtonElements();
 		this.pActionType = new ActionTypeElements();
@@ -1110,22 +1271,19 @@
 		this.pActionChart = new ActionChartElements();
 		this.pActionWorkflow = new ActionWorkflowElements();
 		this.pActionDatainterchange = new ActionDatainterchangeElements();
-		this.pActionGeneric = new ActionGenericElements();
+		this.pActionUI = new ActionUIElements();
+		this.pActionFunction = new ActionFunctionElements();
 		this.pActionParameter = new ActionParameterElements();
-		this.pActionImport = new ActionImportElements();
-		this.pSignedNumber = new SignedNumberElements();
-		this.pActionQualifiedNameWithWildCard = new ActionQualifiedNameWithWildCardElements();
-		this.pQualifiedName = new QualifiedNameElements();
-		this.pValidID = new ValidIDElements();
 		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
 		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
-		this.unknownRuleTaskActionEnum = new TaskActionEnumElements();
-		this.unknownRuleSelectWorkloadActionEnum = new SelectWorkloadActionEnumElements();
-		this.unknownRuleDialogActionEnum = new DialogActionEnumElements();
-		this.unknownRuleReportActionEnum = new ReportActionEnumElements();
-		this.unknownRuleChartActionEnum = new ChartActionEnumElements();
-		this.unknownRuleWorkflowActionEnum = new WorkflowActionEnumElements();
-		this.unknownRuleDatainterchangeActionEnum = new DatainterchangeActionEnumElements();
+		this.eTaskActionEnum = new TaskActionEnumElements();
+		this.eSelectWorkloadActionEnum = new SelectWorkloadActionEnumElements();
+		this.eDialogActionEnum = new DialogActionEnumElements();
+		this.eReportActionEnum = new ReportActionEnumElements();
+		this.eChartActionEnum = new ChartActionEnumElements();
+		this.eWorkflowActionEnum = new WorkflowActionEnumElements();
+		this.eDatainterchangeActionEnum = new DatainterchangeActionEnumElements();
+		this.eUIActionEnum = new UIActionEnumElements();
 	}
 	
 	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
@@ -1144,18 +1302,31 @@
 		return grammar;
 	}
 	
-	
+	@Override
 	public Grammar getGrammar() {
 		return grammar;
 	}
 	
-
+	
+	public OXtypeGrammarAccess getOXtypeGrammarAccess() {
+		return gaOXtype;
+	}
+	
 	public XbaseWithAnnotationsGrammarAccess getXbaseWithAnnotationsGrammarAccess() {
 		return gaXbaseWithAnnotations;
 	}
+	
+	public XbaseGrammarAccess getXbaseGrammarAccess() {
+		return gaXbase;
+	}
+	
+	public XtypeGrammarAccess getXtypeGrammarAccess() {
+		return gaXtype;
+	}
 
 	
 	//ActionModel:
+	//	importSection=XImportSection?
 	//	packages+=ActionPackage*;
 	public ActionModelElements getActionModelAccess() {
 		return pActionModel;
@@ -1164,9 +1335,12 @@
 	public ParserRule getActionModelRule() {
 		return getActionModelAccess().getRule();
 	}
-
+	
 	//ActionPackage:
-	//	{ActionPackage} "package" name=QualifiedName ("{" imports+=ActionImport* toolbars+=ActionToolbar* "}")?;
+	//	{ActionPackage} 'package' name=QualifiedName ('{'
+	//	commands+=ActionCommand*
+	//	toolbars+=ActionToolbar*
+	//	'}')?;
 	public ActionPackageElements getActionPackageAccess() {
 		return pActionPackage;
 	}
@@ -1174,10 +1348,22 @@
 	public ParserRule getActionPackageRule() {
 		return getActionPackageAccess().getRule();
 	}
-
+	
+	//ActionCommand:
+	//	{ActionCommand} 'command' name=ID (hasDescription?='describedBy' description=TRANSLATABLESTRING)?
+	//	(hasKeyBinding?='keyBinding' keyBinding=STRING)?
+	//	actionType=ActionType;
+	public ActionCommandElements getActionCommandAccess() {
+		return pActionCommand;
+	}
+	
+	public ParserRule getActionCommandRule() {
+		return getActionCommandAccess().getRule();
+	}
+	
 	//ActionToolbar:
-	//	{ActionToolbar} "toolbar" name=ID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("items" "{"
-	//	actions+=ActionButton* "}")?;
+	//	{ActionToolbar} 'toolbar' name=ID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? ('items' '{'
+	//	actions+=ActionButton* '}')?;
 	public ActionToolbarElements getActionToolbarAccess() {
 		return pActionToolbar;
 	}
@@ -1185,13 +1371,10 @@
 	public ParserRule getActionToolbarRule() {
 		return getActionToolbarAccess().getRule();
 	}
-
+	
 	//ActionButton:
-	//	{ActionButton} "item" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)? ("icon"
-	//	iconURI=STRING)? ("group" group=[func::FunctionLibraryGroup] ("canExecute"
-	//	canexecute=[func::FunctionLibraryFunction])? & ("executeParameter"
-	//	executeparameter=[func::FunctionLibraryFunction])?)? actionType=ActionType ("message"
-	//	message=[msg::MessageItem|QualifiedName])?;
+	//	{ActionButton} 'item' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
+	//	'command' command=[ActionCommand] ('icon' iconURI=STRING)?;
 	public ActionButtonElements getActionButtonAccess() {
 		return pActionButton;
 	}
@@ -1199,10 +1382,10 @@
 	public ParserRule getActionButtonRule() {
 		return getActionButtonAccess().getRule();
 	}
-
+	
 	//ActionType:
-	//	ActionTask | ActionSelectWorkload | ActionDialog | ActionReport | ActionChart | ActionWorkflow | ActionGeneric |
-	//	ActionDatainterchange;
+	//	ActionTask | ActionSelectWorkload | ActionDialog | ActionReport | ActionChart | ActionWorkflow | ActionFunction |
+	//	ActionDatainterchange | ActionUI;
 	public ActionTypeElements getActionTypeAccess() {
 		return pActionType;
 	}
@@ -1210,9 +1393,9 @@
 	public ParserRule getActionTypeRule() {
 		return getActionTypeAccess().getRule();
 	}
-
+	
 	//ActionTask:
-	//	"taskAction" action=TaskActionEnum;
+	//	'taskAction' action=TaskActionEnum;
 	public ActionTaskElements getActionTaskAccess() {
 		return pActionTask;
 	}
@@ -1220,9 +1403,9 @@
 	public ParserRule getActionTaskRule() {
 		return getActionTaskAccess().getRule();
 	}
-
+	
 	//ActionSelectWorkload:
-	//	"selectWorkloadAction" action=SelectWorkloadActionEnum;
+	//	'selectWorkloadAction' action=SelectWorkloadActionEnum;
 	public ActionSelectWorkloadElements getActionSelectWorkloadAccess() {
 		return pActionSelectWorkload;
 	}
@@ -1230,9 +1413,9 @@
 	public ParserRule getActionSelectWorkloadRule() {
 		return getActionSelectWorkloadAccess().getRule();
 	}
-
+	
 	//ActionDialog:
-	//	"dialogAction" action=DialogActionEnum;
+	//	'dialogAction' action=DialogActionEnum;
 	public ActionDialogElements getActionDialogAccess() {
 		return pActionDialog;
 	}
@@ -1240,9 +1423,9 @@
 	public ParserRule getActionDialogRule() {
 		return getActionDialogAccess().getRule();
 	}
-
+	
 	//ActionReport:
-	//	"reportAction" action=ReportActionEnum;
+	//	'reportAction' action=ReportActionEnum;
 	public ActionReportElements getActionReportAccess() {
 		return pActionReport;
 	}
@@ -1250,9 +1433,9 @@
 	public ParserRule getActionReportRule() {
 		return getActionReportAccess().getRule();
 	}
-
+	
 	//ActionChart:
-	//	"chartAction" action=ChartActionEnum;
+	//	'chartAction' action=ChartActionEnum;
 	public ActionChartElements getActionChartAccess() {
 		return pActionChart;
 	}
@@ -1260,9 +1443,9 @@
 	public ParserRule getActionChartRule() {
 		return getActionChartAccess().getRule();
 	}
-
+	
 	//ActionWorkflow:
-	//	"workflowAction" action=WorkflowActionEnum;
+	//	'workflowAction' action=WorkflowActionEnum;
 	public ActionWorkflowElements getActionWorkflowAccess() {
 		return pActionWorkflow;
 	}
@@ -1270,9 +1453,9 @@
 	public ParserRule getActionWorkflowRule() {
 		return getActionWorkflowAccess().getRule();
 	}
-
+	
 	//ActionDatainterchange:
-	//	"datainterchangeAction" action=DatainterchangeActionEnum dataRef=[data::DataInterchange];
+	//	'datainterchangeAction' action=DatainterchangeActionEnum dataRef=[data::DataInterchange];
 	public ActionDatainterchangeElements getActionDatainterchangeAccess() {
 		return pActionDatainterchange;
 	}
@@ -1280,19 +1463,37 @@
 	public ParserRule getActionDatainterchangeRule() {
 		return getActionDatainterchangeAccess().getRule();
 	}
-
-	//ActionGeneric:
-	//	"genericAction" action=STRING;
-	public ActionGenericElements getActionGenericAccess() {
-		return pActionGeneric;
+	
+	//ActionUI:
+	//	'userinterfaceAction' action=UIActionEnum;
+	public ActionUIElements getActionUIAccess() {
+		return pActionUI;
 	}
 	
-	public ParserRule getActionGenericRule() {
-		return getActionGenericAccess().getRule();
+	public ParserRule getActionUIRule() {
+		return getActionUIAccess().getRule();
 	}
-
+	
+	//ActionFunction:
+	//	'functionalAction'
+	//	'group' actionGroup=[func::FunctionLibraryActionGroup]
+	//	'canExecute' canExecute=[func::FunctionLibraryCanExecute] (hasExecuteImmediate?='executeImmediate'
+	//	executeImmediate=[func::FunctionLibraryExecute] (hasMessage?='messageCategory' messageCategory=[msg::MessageCategory]
+	//	'onFailMessage' onFailMessage=[msg::MessageItem] (hasSuccessMessage?='onSuccessMessage'
+	//	onSuccessMessage=[msg::MessageItem])?)?
+	//	| hasExecuteLater?='executeLater' executeLater=[func::FunctionLibraryExecute] (hasStartedMessage?='messageCategory'
+	//	messageCategory=[msg::MessageCategory]
+	//	'onStartedMessage' onStartedMessage=[msg::MessageItem])?);
+	public ActionFunctionElements getActionFunctionAccess() {
+		return pActionFunction;
+	}
+	
+	public ParserRule getActionFunctionRule() {
+		return getActionFunctionAccess().getRule();
+	}
+	
 	//ActionParameter:
-	//	{ActionParameter} "parameter" parameter=[func::FunctionLibraryParameter];
+	//	{ActionParameter} 'parameter' parameter=[func::FunctionLibraryParameter];
 	public ActionParameterElements getActionParameterAccess() {
 		return pActionParameter;
 	}
@@ -1300,57 +1501,7 @@
 	public ParserRule getActionParameterRule() {
 		return getActionParameterAccess().getRule();
 	}
-
-	//ActionImport returns types::LImport:
-	//	"import" importedNamespace=ActionQualifiedNameWithWildCard;
-	public ActionImportElements getActionImportAccess() {
-		return pActionImport;
-	}
 	
-	public ParserRule getActionImportRule() {
-		return getActionImportAccess().getRule();
-	}
-
-	//SignedNumber returns ecore::EDouble:
-	//	"-"? Number;
-	public SignedNumberElements getSignedNumberAccess() {
-		return pSignedNumber;
-	}
-	
-	public ParserRule getSignedNumberRule() {
-		return getSignedNumberAccess().getRule();
-	}
-
-	//ActionQualifiedNameWithWildCard:
-	//	QualifiedName ("." "*")?;
-	public ActionQualifiedNameWithWildCardElements getActionQualifiedNameWithWildCardAccess() {
-		return pActionQualifiedNameWithWildCard;
-	}
-	
-	public ParserRule getActionQualifiedNameWithWildCardRule() {
-		return getActionQualifiedNameWithWildCardAccess().getRule();
-	}
-
-	//QualifiedName:
-	//	ValidID ("." ValidID)*;
-	public QualifiedNameElements getQualifiedNameAccess() {
-		return pQualifiedName;
-	}
-	
-	public ParserRule getQualifiedNameRule() {
-		return getQualifiedNameAccess().getRule();
-	}
-
-	//ValidID:
-	//	ID;
-	public ValidIDElements getValidIDAccess() {
-		return pValidID;
-	}
-	
-	public ParserRule getValidIDRule() {
-		return getValidIDAccess().getRule();
-	}
-
 	//TRANSLATABLEID:
 	//	ID;
 	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
@@ -1360,7 +1511,7 @@
 	public ParserRule getTRANSLATABLEIDRule() {
 		return getTRANSLATABLEIDAccess().getRule();
 	}
-
+	
 	//TRANSLATABLESTRING:
 	//	STRING;
 	public TRANSLATABLESTRINGElements getTRANSLATABLESTRINGAccess() {
@@ -1370,85 +1521,114 @@
 	public ParserRule getTRANSLATABLESTRINGRule() {
 		return getTRANSLATABLESTRINGAccess().getRule();
 	}
-
+	
 	//enum TaskActionEnum:
-	//	TASK_ACTION_CLAIM="Claim" | TASK_ACTION_START="Start" | TASK_ACTION_STOP="Stop" | TASK_ACTION_RELEASE="Release" |
-	//	TASK_ACTION_SUSPEND="Suspend" | TASK_ACTION_RESUME="Resume" | TASK_ACTION_SKIP="Skip" |
-	//	TASK_ACTION_COMPLETE="Complete" | TASK_ACTION_DELEGATE="Delegate" | TASK_ACTION_FORWARD="Forward" |
-	//	TASK_ACTION_FAIL="Fail" | TASK_ACTION_REGISTER="Register" | TASK_ACTION_REMOVE="Remove" |
-	//	TASK_ACTION_ACTIVATE="Activate" | TASK_ACTION_EXIT="Exit";
+	//	TASK_ACTION_CLAIM='Claim' | TASK_ACTION_START='Start' | TASK_ACTION_STOP='Stop' | TASK_ACTION_RELEASE='Release' |
+	//	TASK_ACTION_SUSPEND='Suspend' |
+	//	TASK_ACTION_RESUME='Resume' | TASK_ACTION_SKIP='Skip' | TASK_ACTION_COMPLETE='Complete' |
+	//	TASK_ACTION_DELEGATE='Delegate' |
+	//	TASK_ACTION_FORWARD='Forward' | TASK_ACTION_FAIL='Fail' | TASK_ACTION_REGISTER='Register' |
+	//	TASK_ACTION_REMOVE='Remove' |
+	//	TASK_ACTION_ACTIVATE='Activate' | TASK_ACTION_EXIT='Exit';
 	public TaskActionEnumElements getTaskActionEnumAccess() {
-		return unknownRuleTaskActionEnum;
+		return eTaskActionEnum;
 	}
 	
 	public EnumRule getTaskActionEnumRule() {
 		return getTaskActionEnumAccess().getRule();
 	}
-
+	
 	//enum SelectWorkloadActionEnum:
-	//	WORKLOAD_SELECT_ACTION_REMOVE_ALL="RemoveAll" | WORKLOAD_SELECT_ACTION_ADD_ALL="AddAll";
+	//	WORKLOAD_SELECT_ACTION_REMOVE_ALL='RemoveAll' | WORKLOAD_SELECT_ACTION_ADD_ALL='AddAll';
 	public SelectWorkloadActionEnumElements getSelectWorkloadActionEnumAccess() {
-		return unknownRuleSelectWorkloadActionEnum;
+		return eSelectWorkloadActionEnum;
 	}
 	
 	public EnumRule getSelectWorkloadActionEnumRule() {
 		return getSelectWorkloadActionEnumAccess().getRule();
 	}
-
+	
 	//enum DialogActionEnum:
-	//	DIALOG_ACTION_NEW="New" | DIALOG_ACTION_SAVE="Save" | DIALOG_ACTION_DELETE="Delete" | DIALOG_ACTION_CANCEL="Cancel";
+	//	DIALOG_ACTION_NEW='New' | DIALOG_ACTION_SAVE='Save' | DIALOG_ACTION_DELETE='Delete' | DIALOG_ACTION_CANCEL='Cancel';
 	public DialogActionEnumElements getDialogActionEnumAccess() {
-		return unknownRuleDialogActionEnum;
+		return eDialogActionEnum;
 	}
 	
 	public EnumRule getDialogActionEnumRule() {
 		return getDialogActionEnumAccess().getRule();
 	}
-
+	
 	//enum ReportActionEnum:
-	//	REPORT_ACTION_PRINT_ON_SERVER_PDF="PrintOnServer" | REPORT_ACTION_DOWNLOAD_PDF="Download";
+	//	REPORT_ACTION_PRINT_ON_SERVER_PDF='PrintOnServer' | REPORT_ACTION_DOWNLOAD_PDF='Download';
 	public ReportActionEnumElements getReportActionEnumAccess() {
-		return unknownRuleReportActionEnum;
+		return eReportActionEnum;
 	}
 	
 	public EnumRule getReportActionEnumRule() {
 		return getReportActionEnumAccess().getRule();
 	}
-
+	
 	//enum ChartActionEnum:
-	//	CHART_ACTION_DOWNLOAD="Download";
+	//	CHART_ACTION_DOWNLOAD='Download';
 	public ChartActionEnumElements getChartActionEnumAccess() {
-		return unknownRuleChartActionEnum;
+		return eChartActionEnum;
 	}
 	
 	public EnumRule getChartActionEnumRule() {
 		return getChartActionEnumAccess().getRule();
 	}
-
+	
 	//enum WorkflowActionEnum:
-	//	WORKFLOW_ACTION_START="Start";
+	//	WORKFLOW_ACTION_START='Start';
 	public WorkflowActionEnumElements getWorkflowActionEnumAccess() {
-		return unknownRuleWorkflowActionEnum;
+		return eWorkflowActionEnum;
 	}
 	
 	public EnumRule getWorkflowActionEnumRule() {
 		return getWorkflowActionEnumAccess().getRule();
 	}
-
+	
 	//enum DatainterchangeActionEnum:
-	//	DATAINTERCHANGE_ACTION_IMPORT="Import" | DATAINTERCHANGE_ACTION_EXPORT="Export";
+	//	DATAINTERCHANGE_ACTION_IMPORT='Import' | DATAINTERCHANGE_ACTION_EXPORT='Export';
 	public DatainterchangeActionEnumElements getDatainterchangeActionEnumAccess() {
-		return unknownRuleDatainterchangeActionEnum;
+		return eDatainterchangeActionEnum;
 	}
 	
 	public EnumRule getDatainterchangeActionEnumRule() {
 		return getDatainterchangeActionEnumAccess().getRule();
 	}
-
+	
+	//enum UIActionEnum:
+	//	NEXT_PART='NextPart' |
+	//	PREVIOUS_PART='PreviousPart';
+	public UIActionEnumElements getUIActionEnumAccess() {
+		return eUIActionEnum;
+	}
+	
+	public EnumRule getUIActionEnumRule() {
+		return getUIActionEnumAccess().getRule();
+	}
+	
+	//@ Override XImportDeclaration OXImportDeclaration:
+	//	{OXImportDeclaration}
+	//	'import' (static?='static' extension?='extension'? importedType=[JvmDeclaredType|QualifiedNameInStaticImport]
+	//	(wildcard?='*' | memberName=ValidID) | importedType=[JvmDeclaredType|QualifiedName] |
+	//	importedNamespace=QualifiedNameWithWildcard
+	//	| fqnImport?='ns' importedFullyQualifiedName=QualifiedName) ';'?;
+	public OXtypeGrammarAccess.XImportDeclarationElements getXImportDeclarationAccess() {
+		return gaOXtype.getXImportDeclarationAccess();
+	}
+	
+	public ParserRule getXImportDeclarationRule() {
+		return getXImportDeclarationAccess().getRule();
+	}
+	
 	//XAnnotation:
-	//	{XAnnotation} "@" annotationType=[types::JvmAnnotationType|QualifiedName] ("("
-	//	(elementValuePairs+=XAnnotationElementValuePair ("," elementValuePairs+=XAnnotationElementValuePair)* |
-	//	value=XAnnotationElementValueOrCommaList)? ")")?;
+	//	{XAnnotation}
+	//	'@' annotationType=[types::JvmAnnotationType|QualifiedName] (=> '(' (elementValuePairs+=XAnnotationElementValuePair
+	//	(',' elementValuePairs+=XAnnotationElementValuePair)*
+	//	| value=XAnnotationElementValueOrCommaList)?
+	//	')')?;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationElements getXAnnotationAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationAccess();
 	}
@@ -1456,9 +1636,9 @@
 	public ParserRule getXAnnotationRule() {
 		return getXAnnotationAccess().getRule();
 	}
-
+	
 	//XAnnotationElementValuePair:
-	//	=> (element=[types::JvmOperation|ValidID] "=") value=XAnnotationElementValue;
+	//	=> (element=[types::JvmOperation|ValidID] '=') value=XAnnotationElementValue;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValuePairElements getXAnnotationElementValuePairAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationElementValuePairAccess();
 	}
@@ -1466,10 +1646,10 @@
 	public ParserRule getXAnnotationElementValuePairRule() {
 		return getXAnnotationElementValuePairAccess().getRule();
 	}
-
-	//XAnnotationElementValueOrCommaList returns xbase::XExpression:
-	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]"
-	//	| XAnnotationOrExpression ({xbase::XListLiteral.elements+=current} ("," elements+=XAnnotationOrExpression)+)?;
+	
+	//XAnnotationElementValueOrCommaList xbase::XExpression:
+	//	=> ({xbase::XListLiteral} '#' '[') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? ']'
+	//	| XAnnotationOrExpression ({xbase::XListLiteral.elements+=current} (',' elements+=XAnnotationOrExpression)+)?;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueOrCommaListElements getXAnnotationElementValueOrCommaListAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationElementValueOrCommaListAccess();
 	}
@@ -1477,9 +1657,9 @@
 	public ParserRule getXAnnotationElementValueOrCommaListRule() {
 		return getXAnnotationElementValueOrCommaListAccess().getRule();
 	}
-
-	//XAnnotationElementValue returns xbase::XExpression:
-	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]"
+	
+	//XAnnotationElementValue xbase::XExpression:
+	//	=> ({xbase::XListLiteral} '#' '[') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? ']'
 	//	| XAnnotationOrExpression;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationElementValueAccess();
@@ -1488,8 +1668,8 @@
 	public ParserRule getXAnnotationElementValueRule() {
 		return getXAnnotationElementValueAccess().getRule();
 	}
-
-	//XAnnotationOrExpression returns xbase::XExpression:
+	
+	//XAnnotationOrExpression xbase::XExpression:
 	//	XAnnotation | XExpression;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationOrExpressionAccess();
@@ -1498,860 +1678,902 @@
 	public ParserRule getXAnnotationOrExpressionRule() {
 		return getXAnnotationOrExpressionAccess().getRule();
 	}
-
+	
 	//XExpression:
 	//	XAssignment;
 	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
-		return gaXbaseWithAnnotations.getXExpressionAccess();
+		return gaXbase.getXExpressionAccess();
 	}
 	
 	public ParserRule getXExpressionRule() {
 		return getXExpressionAccess().getRule();
 	}
-
-	//XAssignment returns XExpression:
+	
+	//XAssignment XExpression:
 	//	{XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign value=XAssignment | XOrExpression
 	//	(=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
 	//	rightOperand=XAssignment)?;
 	public XbaseGrammarAccess.XAssignmentElements getXAssignmentAccess() {
-		return gaXbaseWithAnnotations.getXAssignmentAccess();
+		return gaXbase.getXAssignmentAccess();
 	}
 	
 	public ParserRule getXAssignmentRule() {
 		return getXAssignmentAccess().getRule();
 	}
-
+	
 	//OpSingleAssign:
-	//	"=";
+	//	'=';
 	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
-		return gaXbaseWithAnnotations.getOpSingleAssignAccess();
+		return gaXbase.getOpSingleAssignAccess();
 	}
 	
 	public ParserRule getOpSingleAssignRule() {
 		return getOpSingleAssignAccess().getRule();
 	}
-
+	
 	//OpMultiAssign:
-	//	"+=" | "-=" | "*=" | "/=" | "%=" | "<" "<" "=" | ">" ">"? ">=";
+	//	'+=' | '-=' | '*=' | '/=' | '%=' |
+	//	'<' '<' '=' |
+	//	'>' '>'? '>=';
 	public XbaseGrammarAccess.OpMultiAssignElements getOpMultiAssignAccess() {
-		return gaXbaseWithAnnotations.getOpMultiAssignAccess();
+		return gaXbase.getOpMultiAssignAccess();
 	}
 	
 	public ParserRule getOpMultiAssignRule() {
 		return getOpMultiAssignAccess().getRule();
 	}
-
-	//XOrExpression returns XExpression:
+	
+	//XOrExpression XExpression:
 	//	XAndExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOr])
 	//	rightOperand=XAndExpression)*;
 	public XbaseGrammarAccess.XOrExpressionElements getXOrExpressionAccess() {
-		return gaXbaseWithAnnotations.getXOrExpressionAccess();
+		return gaXbase.getXOrExpressionAccess();
 	}
 	
 	public ParserRule getXOrExpressionRule() {
 		return getXOrExpressionAccess().getRule();
 	}
-
+	
 	//OpOr:
-	//	"||";
+	//	'||';
 	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
-		return gaXbaseWithAnnotations.getOpOrAccess();
+		return gaXbase.getOpOrAccess();
 	}
 	
 	public ParserRule getOpOrRule() {
 		return getOpOrAccess().getRule();
 	}
-
-	//XAndExpression returns XExpression:
+	
+	//XAndExpression XExpression:
 	//	XEqualityExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAnd])
 	//	rightOperand=XEqualityExpression)*;
 	public XbaseGrammarAccess.XAndExpressionElements getXAndExpressionAccess() {
-		return gaXbaseWithAnnotations.getXAndExpressionAccess();
+		return gaXbase.getXAndExpressionAccess();
 	}
 	
 	public ParserRule getXAndExpressionRule() {
 		return getXAndExpressionAccess().getRule();
 	}
-
+	
 	//OpAnd:
-	//	"&&";
+	//	'&&';
 	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
-		return gaXbaseWithAnnotations.getOpAndAccess();
+		return gaXbase.getOpAndAccess();
 	}
 	
 	public ParserRule getOpAndRule() {
 		return getOpAndAccess().getRule();
 	}
-
-	//XEqualityExpression returns XExpression:
+	
+	//XEqualityExpression XExpression:
 	//	XRelationalExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpEquality])
 	//	rightOperand=XRelationalExpression)*;
 	public XbaseGrammarAccess.XEqualityExpressionElements getXEqualityExpressionAccess() {
-		return gaXbaseWithAnnotations.getXEqualityExpressionAccess();
+		return gaXbase.getXEqualityExpressionAccess();
 	}
 	
 	public ParserRule getXEqualityExpressionRule() {
 		return getXEqualityExpressionAccess().getRule();
 	}
-
+	
 	//OpEquality:
-	//	"==" | "!=" | "===" | "!==";
+	//	'==' | '!=' | '===' | '!==';
 	public XbaseGrammarAccess.OpEqualityElements getOpEqualityAccess() {
-		return gaXbaseWithAnnotations.getOpEqualityAccess();
+		return gaXbase.getOpEqualityAccess();
 	}
 	
 	public ParserRule getOpEqualityRule() {
 		return getOpEqualityAccess().getRule();
 	}
-
-	//XRelationalExpression returns XExpression:
-	//	XOtherOperatorExpression (=> ({XInstanceOfExpression.expression=current} "instanceof") type=JvmTypeReference | =>
-	//	({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
+	
+	//XRelationalExpression XExpression:
+	//	XOtherOperatorExpression (=> ({XInstanceOfExpression.expression=current} 'instanceof') type=JvmTypeReference |
+	//	=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
 	//	rightOperand=XOtherOperatorExpression)*;
 	public XbaseGrammarAccess.XRelationalExpressionElements getXRelationalExpressionAccess() {
-		return gaXbaseWithAnnotations.getXRelationalExpressionAccess();
+		return gaXbase.getXRelationalExpressionAccess();
 	}
 	
 	public ParserRule getXRelationalExpressionRule() {
 		return getXRelationalExpressionAccess().getRule();
 	}
-
+	
 	//OpCompare:
-	//	">=" | "<" "=" | ">" | "<";
+	//	'>=' | '<' '=' | '>' | '<';
 	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
-		return gaXbaseWithAnnotations.getOpCompareAccess();
+		return gaXbase.getOpCompareAccess();
 	}
 	
 	public ParserRule getOpCompareRule() {
 		return getOpCompareAccess().getRule();
 	}
-
-	//XOtherOperatorExpression returns XExpression:
+	
+	//XOtherOperatorExpression XExpression:
 	//	XAdditiveExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOther])
 	//	rightOperand=XAdditiveExpression)*;
 	public XbaseGrammarAccess.XOtherOperatorExpressionElements getXOtherOperatorExpressionAccess() {
-		return gaXbaseWithAnnotations.getXOtherOperatorExpressionAccess();
+		return gaXbase.getXOtherOperatorExpressionAccess();
 	}
 	
 	public ParserRule getXOtherOperatorExpressionRule() {
 		return getXOtherOperatorExpressionAccess().getRule();
 	}
-
+	
 	//OpOther:
-	//	"->" | "..<" | ">" ".." | ".." | "=>" | ">" (=> (">" ">") | ">") | "<" (=> ("<" "<") | "<" | "=>") | "<>" | "?:";
+	//	'->'
+	//	| '..<'
+	//	| '>' '..'
+	//	| '..'
+	//	| '=>'
+	//	| '>' (=> ('>' '>') | '>') | '<' (=> ('<' '<') | '<' | '=>') | '<>'
+	//	| '?:';
 	public XbaseGrammarAccess.OpOtherElements getOpOtherAccess() {
-		return gaXbaseWithAnnotations.getOpOtherAccess();
+		return gaXbase.getOpOtherAccess();
 	}
 	
 	public ParserRule getOpOtherRule() {
 		return getOpOtherAccess().getRule();
 	}
-
-	//XAdditiveExpression returns XExpression:
+	
+	//XAdditiveExpression XExpression:
 	//	XMultiplicativeExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAdd])
 	//	rightOperand=XMultiplicativeExpression)*;
 	public XbaseGrammarAccess.XAdditiveExpressionElements getXAdditiveExpressionAccess() {
-		return gaXbaseWithAnnotations.getXAdditiveExpressionAccess();
+		return gaXbase.getXAdditiveExpressionAccess();
 	}
 	
 	public ParserRule getXAdditiveExpressionRule() {
 		return getXAdditiveExpressionAccess().getRule();
 	}
-
+	
 	//OpAdd:
-	//	"+" | "-";
+	//	'+' | '-';
 	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
-		return gaXbaseWithAnnotations.getOpAddAccess();
+		return gaXbase.getOpAddAccess();
 	}
 	
 	public ParserRule getOpAddRule() {
 		return getOpAddAccess().getRule();
 	}
-
-	//XMultiplicativeExpression returns XExpression:
+	
+	//XMultiplicativeExpression XExpression:
 	//	XUnaryOperation (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMulti])
 	//	rightOperand=XUnaryOperation)*;
 	public XbaseGrammarAccess.XMultiplicativeExpressionElements getXMultiplicativeExpressionAccess() {
-		return gaXbaseWithAnnotations.getXMultiplicativeExpressionAccess();
+		return gaXbase.getXMultiplicativeExpressionAccess();
 	}
 	
 	public ParserRule getXMultiplicativeExpressionRule() {
 		return getXMultiplicativeExpressionAccess().getRule();
 	}
-
+	
 	//OpMulti:
-	//	"*" | "**" | "/" | "%";
+	//	'*' | '**' | '/' | '%';
 	public XbaseGrammarAccess.OpMultiElements getOpMultiAccess() {
-		return gaXbaseWithAnnotations.getOpMultiAccess();
+		return gaXbase.getOpMultiAccess();
 	}
 	
 	public ParserRule getOpMultiRule() {
 		return getOpMultiAccess().getRule();
 	}
-
-	//XUnaryOperation returns XExpression:
-	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation | XCastedExpression;
+	
+	//XUnaryOperation XExpression:
+	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation
+	//	| XCastedExpression;
 	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
-		return gaXbaseWithAnnotations.getXUnaryOperationAccess();
+		return gaXbase.getXUnaryOperationAccess();
 	}
 	
 	public ParserRule getXUnaryOperationRule() {
 		return getXUnaryOperationAccess().getRule();
 	}
-
+	
 	//OpUnary:
 	//	"!" | "-" | "+";
 	public XbaseGrammarAccess.OpUnaryElements getOpUnaryAccess() {
-		return gaXbaseWithAnnotations.getOpUnaryAccess();
+		return gaXbase.getOpUnaryAccess();
 	}
 	
 	public ParserRule getOpUnaryRule() {
 		return getOpUnaryAccess().getRule();
 	}
-
-	//XCastedExpression returns XExpression:
-	//	XPostfixOperation (=> ({XCastedExpression.target=current} "as") type=JvmTypeReference)*;
+	
+	//XCastedExpression XExpression:
+	//	XPostfixOperation (=> ({XCastedExpression.target=current} 'as') type=JvmTypeReference)*;
 	public XbaseGrammarAccess.XCastedExpressionElements getXCastedExpressionAccess() {
-		return gaXbaseWithAnnotations.getXCastedExpressionAccess();
+		return gaXbase.getXCastedExpressionAccess();
 	}
 	
 	public ParserRule getXCastedExpressionRule() {
 		return getXCastedExpressionAccess().getRule();
 	}
-
-	//XPostfixOperation returns XExpression:
+	
+	//XPostfixOperation XExpression:
 	//	XMemberFeatureCall => ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])?;
 	public XbaseGrammarAccess.XPostfixOperationElements getXPostfixOperationAccess() {
-		return gaXbaseWithAnnotations.getXPostfixOperationAccess();
+		return gaXbase.getXPostfixOperationAccess();
 	}
 	
 	public ParserRule getXPostfixOperationRule() {
 		return getXPostfixOperationAccess().getRule();
 	}
-
+	
 	//OpPostfix:
 	//	"++" | "--";
 	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
-		return gaXbaseWithAnnotations.getOpPostfixAccess();
+		return gaXbase.getOpPostfixAccess();
 	}
 	
 	public ParserRule getOpPostfixRule() {
 		return getOpPostfixAccess().getRule();
 	}
-
-	//XMemberFeatureCall returns XExpression:
-	//	XPrimaryExpression (=> ({XAssignment.assignable=current} ("." | explicitStatic?="::")
-	//	feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment | =>
-	//	({XMemberFeatureCall.memberCallTarget=current} ("." | nullSafe?="?." | explicitStatic?="::")) ("<"
-	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
-	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (memberCallArguments+=XShortClosure
-	//	| memberCallArguments+=XExpression ("," memberCallArguments+=XExpression)*)? ")")? memberCallArguments+=XClosure?)*;
+	
+	//XMemberFeatureCall XExpression:
+	//	XPrimaryExpression (=> ({XAssignment.assignable=current} ('.' | explicitStatic?="::")
+	//	feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment
+	//	| => ({XMemberFeatureCall.memberCallTarget=current} ("." | nullSafe?="?." | explicitStatic?="::")) ('<'
+	//	typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)* '>')?
+	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?='(' (memberCallArguments+=XShortClosure
+	//	| memberCallArguments+=XExpression (',' memberCallArguments+=XExpression)*)?
+	//	')')?
+	//	memberCallArguments+=XClosure?)*;
 	public XbaseGrammarAccess.XMemberFeatureCallElements getXMemberFeatureCallAccess() {
-		return gaXbaseWithAnnotations.getXMemberFeatureCallAccess();
+		return gaXbase.getXMemberFeatureCallAccess();
 	}
 	
 	public ParserRule getXMemberFeatureCallRule() {
 		return getXMemberFeatureCallAccess().getRule();
 	}
-
-	//XPrimaryExpression returns XExpression:
+	
+	//XPrimaryExpression XExpression:
 	//	XConstructorCall | XBlockExpression | XSwitchExpression | XSynchronizedExpression | XFeatureCall | XLiteral |
 	//	XIfExpression | XForLoopExpression | XBasicForLoopExpression | XWhileExpression | XDoWhileExpression |
 	//	XThrowExpression | XReturnExpression | XTryCatchFinallyExpression | XParenthesizedExpression;
 	public XbaseGrammarAccess.XPrimaryExpressionElements getXPrimaryExpressionAccess() {
-		return gaXbaseWithAnnotations.getXPrimaryExpressionAccess();
+		return gaXbase.getXPrimaryExpressionAccess();
 	}
 	
 	public ParserRule getXPrimaryExpressionRule() {
 		return getXPrimaryExpressionAccess().getRule();
 	}
-
-	//XLiteral returns XExpression:
+	
+	//XLiteral XExpression:
 	//	XCollectionLiteral | XClosure | XBooleanLiteral | XNumberLiteral | XNullLiteral | XStringLiteral | XTypeLiteral;
 	public XbaseGrammarAccess.XLiteralElements getXLiteralAccess() {
-		return gaXbaseWithAnnotations.getXLiteralAccess();
+		return gaXbase.getXLiteralAccess();
 	}
 	
 	public ParserRule getXLiteralRule() {
 		return getXLiteralAccess().getRule();
 	}
-
+	
 	//XCollectionLiteral:
 	//	XSetLiteral | XListLiteral;
 	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
-		return gaXbaseWithAnnotations.getXCollectionLiteralAccess();
+		return gaXbase.getXCollectionLiteralAccess();
 	}
 	
 	public ParserRule getXCollectionLiteralRule() {
 		return getXCollectionLiteralAccess().getRule();
 	}
-
+	
 	//XSetLiteral:
-	//	{XSetLiteral} "#" "{" (elements+=XExpression ("," elements+=XExpression)*)? "}";
+	//	{XSetLiteral} '#' '{' (elements+=XExpression (',' elements+=XExpression)*)? '}';
 	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
-		return gaXbaseWithAnnotations.getXSetLiteralAccess();
+		return gaXbase.getXSetLiteralAccess();
 	}
 	
 	public ParserRule getXSetLiteralRule() {
 		return getXSetLiteralAccess().getRule();
 	}
-
+	
 	//XListLiteral:
-	//	{XListLiteral} "#" "[" (elements+=XExpression ("," elements+=XExpression)*)? "]";
+	//	{XListLiteral} '#' '[' (elements+=XExpression (',' elements+=XExpression)*)? ']';
 	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
-		return gaXbaseWithAnnotations.getXListLiteralAccess();
+		return gaXbase.getXListLiteralAccess();
 	}
 	
 	public ParserRule getXListLiteralRule() {
 		return getXListLiteralAccess().getRule();
 	}
-
-	//XClosure returns XExpression:
-	//	=> ({XClosure} "[") => ((declaredFormalParameters+=JvmFormalParameter (","
-	//	declaredFormalParameters+=JvmFormalParameter)*)? explicitSyntax?="|")? expression=XExpressionInClosure "]";
+	
+	//XClosure XExpression:
+	//	=> ({XClosure}
+	//	'[')
+	//	=> ((declaredFormalParameters+=JvmFormalParameter (',' declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?='|')?
+	//	expression=XExpressionInClosure
+	//	']';
 	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
-		return gaXbaseWithAnnotations.getXClosureAccess();
+		return gaXbase.getXClosureAccess();
 	}
 	
 	public ParserRule getXClosureRule() {
 		return getXClosureAccess().getRule();
 	}
-
-	//XExpressionInClosure returns XExpression:
-	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ";"?)*;
+	
+	//XExpressionInClosure XExpression:
+	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ';'?)*;
 	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
-		return gaXbaseWithAnnotations.getXExpressionInClosureAccess();
+		return gaXbase.getXExpressionInClosureAccess();
 	}
 	
 	public ParserRule getXExpressionInClosureRule() {
 		return getXExpressionInClosureAccess().getRule();
 	}
-
-	//XShortClosure returns XExpression:
-	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter ("," declaredFormalParameters+=JvmFormalParameter)*)?
-	//	explicitSyntax?="|") expression=XExpression;
+	
+	//XShortClosure XExpression:
+	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter (',' declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?='|') expression=XExpression;
 	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
-		return gaXbaseWithAnnotations.getXShortClosureAccess();
+		return gaXbase.getXShortClosureAccess();
 	}
 	
 	public ParserRule getXShortClosureRule() {
 		return getXShortClosureAccess().getRule();
 	}
-
-	//XParenthesizedExpression returns XExpression:
-	//	"(" XExpression ")";
+	
+	//XParenthesizedExpression XExpression:
+	//	'(' XExpression ')';
 	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
-		return gaXbaseWithAnnotations.getXParenthesizedExpressionAccess();
+		return gaXbase.getXParenthesizedExpressionAccess();
 	}
 	
 	public ParserRule getXParenthesizedExpressionRule() {
 		return getXParenthesizedExpressionAccess().getRule();
 	}
-
-	//XIfExpression returns XExpression:
-	//	{XIfExpression} "if" "(" if=XExpression ")" then=XExpression ("else" else=XExpression)?;
+	
+	//XIfExpression XExpression:
+	//	{XIfExpression}
+	//	'if' '(' if=XExpression ')'
+	//	then=XExpression (=> 'else' else=XExpression)?;
 	public XbaseGrammarAccess.XIfExpressionElements getXIfExpressionAccess() {
-		return gaXbaseWithAnnotations.getXIfExpressionAccess();
+		return gaXbase.getXIfExpressionAccess();
 	}
 	
 	public ParserRule getXIfExpressionRule() {
 		return getXIfExpressionAccess().getRule();
 	}
-
-	//XSwitchExpression returns XExpression:
-	//	{XSwitchExpression} "switch" (=> ("(" declaredParam=JvmFormalParameter ":") switch=XExpression ")" | =>
-	//	(declaredParam=JvmFormalParameter ":")? switch=XExpression) "{" cases+=XCasePart* ("default" ":"
-	//	default=XExpression)? "}";
+	
+	//XSwitchExpression XExpression:
+	//	{XSwitchExpression}
+	//	'switch' (=> ('(' declaredParam=JvmFormalParameter ':') switch=XExpression ')'
+	//	| => (declaredParam=JvmFormalParameter ':')? switch=XExpression) '{'
+	//	cases+=XCasePart* ('default' ':' default=XExpression)?
+	//	'}';
 	public XbaseGrammarAccess.XSwitchExpressionElements getXSwitchExpressionAccess() {
-		return gaXbaseWithAnnotations.getXSwitchExpressionAccess();
+		return gaXbase.getXSwitchExpressionAccess();
 	}
 	
 	public ParserRule getXSwitchExpressionRule() {
 		return getXSwitchExpressionAccess().getRule();
 	}
-
+	
 	//XCasePart:
-	//	{XCasePart} typeGuard=JvmTypeReference? ("case" case=XExpression)? (":" then=XExpression | fallThrough?=",");
+	//	{XCasePart} typeGuard=JvmTypeReference? ('case' case=XExpression)? (':' then=XExpression | fallThrough?=',');
 	public XbaseGrammarAccess.XCasePartElements getXCasePartAccess() {
-		return gaXbaseWithAnnotations.getXCasePartAccess();
+		return gaXbase.getXCasePartAccess();
 	}
 	
 	public ParserRule getXCasePartRule() {
 		return getXCasePartAccess().getRule();
 	}
-
-	//XForLoopExpression returns XExpression:
-	//	=> ({XForLoopExpression} "for" "(" declaredParam=JvmFormalParameter ":") forExpression=XExpression ")"
+	
+	//XForLoopExpression XExpression:
+	//	=> ({XForLoopExpression}
+	//	'for' '(' declaredParam=JvmFormalParameter ':') forExpression=XExpression ')'
 	//	eachExpression=XExpression;
 	public XbaseGrammarAccess.XForLoopExpressionElements getXForLoopExpressionAccess() {
-		return gaXbaseWithAnnotations.getXForLoopExpressionAccess();
+		return gaXbase.getXForLoopExpressionAccess();
 	}
 	
 	public ParserRule getXForLoopExpressionRule() {
 		return getXForLoopExpressionAccess().getRule();
 	}
-
-	//XBasicForLoopExpression returns XExpression:
-	//	{XBasicForLoopExpression} "for" "(" (initExpressions+=XExpressionOrVarDeclaration (","
-	//	initExpressions+=XExpressionOrVarDeclaration)*)? ";" expression=XExpression? ";" (updateExpressions+=XExpression (","
-	//	updateExpressions+=XExpression)*)? ")" eachExpression=XExpression;
+	
+	//XBasicForLoopExpression XExpression:
+	//	{XBasicForLoopExpression}
+	//	'for' '(' (initExpressions+=XExpressionOrVarDeclaration (',' initExpressions+=XExpressionOrVarDeclaration)*)? ';'
+	//	expression=XExpression? ';' (updateExpressions+=XExpression (',' updateExpressions+=XExpression)*)? ')'
+	//	eachExpression=XExpression;
 	public XbaseGrammarAccess.XBasicForLoopExpressionElements getXBasicForLoopExpressionAccess() {
-		return gaXbaseWithAnnotations.getXBasicForLoopExpressionAccess();
+		return gaXbase.getXBasicForLoopExpressionAccess();
 	}
 	
 	public ParserRule getXBasicForLoopExpressionRule() {
 		return getXBasicForLoopExpressionAccess().getRule();
 	}
-
-	//XWhileExpression returns XExpression:
-	//	{XWhileExpression} "while" "(" predicate=XExpression ")" body=XExpression;
+	
+	//XWhileExpression XExpression:
+	//	{XWhileExpression}
+	//	'while' '(' predicate=XExpression ')'
+	//	body=XExpression;
 	public XbaseGrammarAccess.XWhileExpressionElements getXWhileExpressionAccess() {
-		return gaXbaseWithAnnotations.getXWhileExpressionAccess();
+		return gaXbase.getXWhileExpressionAccess();
 	}
 	
 	public ParserRule getXWhileExpressionRule() {
 		return getXWhileExpressionAccess().getRule();
 	}
-
-	//XDoWhileExpression returns XExpression:
-	//	{XDoWhileExpression} "do" body=XExpression "while" "(" predicate=XExpression ")";
+	
+	//XDoWhileExpression XExpression:
+	//	{XDoWhileExpression}
+	//	'do'
+	//	body=XExpression
+	//	'while' '(' predicate=XExpression ')';
 	public XbaseGrammarAccess.XDoWhileExpressionElements getXDoWhileExpressionAccess() {
-		return gaXbaseWithAnnotations.getXDoWhileExpressionAccess();
+		return gaXbase.getXDoWhileExpressionAccess();
 	}
 	
 	public ParserRule getXDoWhileExpressionRule() {
 		return getXDoWhileExpressionAccess().getRule();
 	}
-
-	//XBlockExpression returns XExpression:
-	//	{XBlockExpression} "{" (expressions+=XExpressionOrVarDeclaration ";"?)* "}";
+	
+	//XBlockExpression XExpression:
+	//	{XBlockExpression}
+	//	'{' (expressions+=XExpressionOrVarDeclaration ';'?)*
+	//	'}';
 	public XbaseGrammarAccess.XBlockExpressionElements getXBlockExpressionAccess() {
-		return gaXbaseWithAnnotations.getXBlockExpressionAccess();
+		return gaXbase.getXBlockExpressionAccess();
 	}
 	
 	public ParserRule getXBlockExpressionRule() {
 		return getXBlockExpressionAccess().getRule();
 	}
-
-	//XExpressionOrVarDeclaration returns XExpression:
+	
+	//XExpressionOrVarDeclaration XExpression:
 	//	XVariableDeclaration | XExpression;
 	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
-		return gaXbaseWithAnnotations.getXExpressionOrVarDeclarationAccess();
+		return gaXbase.getXExpressionOrVarDeclarationAccess();
 	}
 	
 	public ParserRule getXExpressionOrVarDeclarationRule() {
 		return getXExpressionOrVarDeclarationAccess().getRule();
 	}
-
-	//XVariableDeclaration returns XExpression:
-	//	{XVariableDeclaration} (writeable?="var" | "val") (=> (type=JvmTypeReference name=ValidID) | name=ValidID) ("="
+	
+	//XVariableDeclaration XExpression:
+	//	{XVariableDeclaration} (writeable?='var' | 'val') (=> (type=JvmTypeReference name=ValidID) | name=ValidID) ('='
 	//	right=XExpression)?;
 	public XbaseGrammarAccess.XVariableDeclarationElements getXVariableDeclarationAccess() {
-		return gaXbaseWithAnnotations.getXVariableDeclarationAccess();
+		return gaXbase.getXVariableDeclarationAccess();
 	}
 	
 	public ParserRule getXVariableDeclarationRule() {
 		return getXVariableDeclarationAccess().getRule();
 	}
-
-	//JvmFormalParameter returns types::JvmFormalParameter:
+	
+	//JvmFormalParameter types::JvmFormalParameter:
 	//	parameterType=JvmTypeReference? name=ValidID;
 	public XbaseGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
-		return gaXbaseWithAnnotations.getJvmFormalParameterAccess();
+		return gaXbase.getJvmFormalParameterAccess();
 	}
 	
 	public ParserRule getJvmFormalParameterRule() {
 		return getJvmFormalParameterAccess().getRule();
 	}
-
-	//FullJvmFormalParameter returns types::JvmFormalParameter:
+	
+	//FullJvmFormalParameter types::JvmFormalParameter:
 	//	parameterType=JvmTypeReference name=ValidID;
 	public XbaseGrammarAccess.FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
-		return gaXbaseWithAnnotations.getFullJvmFormalParameterAccess();
+		return gaXbase.getFullJvmFormalParameterAccess();
 	}
 	
 	public ParserRule getFullJvmFormalParameterRule() {
 		return getFullJvmFormalParameterAccess().getRule();
 	}
-
-	//XFeatureCall returns XExpression:
-	//	{XFeatureCall} ("<" typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
-	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (featureCallArguments+=XShortClosure
-	//	| featureCallArguments+=XExpression ("," featureCallArguments+=XExpression)*)? ")")? featureCallArguments+=XClosure?;
+	
+	//XFeatureCall XExpression:
+	//	{XFeatureCall} ('<' typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)* '>')?
+	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?='(' (featureCallArguments+=XShortClosure
+	//	| featureCallArguments+=XExpression (',' featureCallArguments+=XExpression)*)?
+	//	')')?
+	//	featureCallArguments+=XClosure?;
 	public XbaseGrammarAccess.XFeatureCallElements getXFeatureCallAccess() {
-		return gaXbaseWithAnnotations.getXFeatureCallAccess();
+		return gaXbase.getXFeatureCallAccess();
 	}
 	
 	public ParserRule getXFeatureCallRule() {
 		return getXFeatureCallAccess().getRule();
 	}
-
+	
 	//FeatureCallID:
-	//	ValidID | "extends" | "static" | "import" | "extension";
+	//	ValidID | 'extends' | 'static' | 'import' | 'extension';
 	public XbaseGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
-		return gaXbaseWithAnnotations.getFeatureCallIDAccess();
+		return gaXbase.getFeatureCallIDAccess();
 	}
 	
 	public ParserRule getFeatureCallIDRule() {
 		return getFeatureCallIDAccess().getRule();
 	}
-
+	
 	//IdOrSuper:
-	//	FeatureCallID | "super";
+	//	FeatureCallID | 'super';
 	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
-		return gaXbaseWithAnnotations.getIdOrSuperAccess();
+		return gaXbase.getIdOrSuperAccess();
 	}
 	
 	public ParserRule getIdOrSuperRule() {
 		return getIdOrSuperAccess().getRule();
 	}
-
-	//XConstructorCall returns XExpression:
-	//	{XConstructorCall} "new" constructor=[types::JvmConstructor|QualifiedName] ("<"
-	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")? (=>
-	//	explicitConstructorCall?="(" (arguments+=XShortClosure | arguments+=XExpression ("," arguments+=XExpression)*)? ")")?
+	
+	//XConstructorCall XExpression:
+	//	{XConstructorCall}
+	//	'new' constructor=[types::JvmConstructor|QualifiedName] (=> '<' typeArguments+=JvmArgumentTypeReference (','
+	//	typeArguments+=JvmArgumentTypeReference)* '>')? (=> explicitConstructorCall?='(' (arguments+=XShortClosure
+	//	| arguments+=XExpression (',' arguments+=XExpression)*)?
+	//	')')?
 	//	arguments+=XClosure?;
 	public XbaseGrammarAccess.XConstructorCallElements getXConstructorCallAccess() {
-		return gaXbaseWithAnnotations.getXConstructorCallAccess();
+		return gaXbase.getXConstructorCallAccess();
 	}
 	
 	public ParserRule getXConstructorCallRule() {
 		return getXConstructorCallAccess().getRule();
 	}
-
-	//XBooleanLiteral returns XExpression:
-	//	{XBooleanLiteral} ("false" | isTrue?="true");
+	
+	//XBooleanLiteral XExpression:
+	//	{XBooleanLiteral} ('false' | isTrue?='true');
 	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
-		return gaXbaseWithAnnotations.getXBooleanLiteralAccess();
+		return gaXbase.getXBooleanLiteralAccess();
 	}
 	
 	public ParserRule getXBooleanLiteralRule() {
 		return getXBooleanLiteralAccess().getRule();
 	}
-
-	//XNullLiteral returns XExpression:
-	//	{XNullLiteral} "null";
+	
+	//XNullLiteral XExpression:
+	//	{XNullLiteral} 'null';
 	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
-		return gaXbaseWithAnnotations.getXNullLiteralAccess();
+		return gaXbase.getXNullLiteralAccess();
 	}
 	
 	public ParserRule getXNullLiteralRule() {
 		return getXNullLiteralAccess().getRule();
 	}
-
-	//XNumberLiteral returns XExpression:
+	
+	//XNumberLiteral XExpression:
 	//	{XNumberLiteral} value=Number;
 	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
-		return gaXbaseWithAnnotations.getXNumberLiteralAccess();
+		return gaXbase.getXNumberLiteralAccess();
 	}
 	
 	public ParserRule getXNumberLiteralRule() {
 		return getXNumberLiteralAccess().getRule();
 	}
-
-	//XStringLiteral returns XExpression:
+	
+	//XStringLiteral XExpression:
 	//	{XStringLiteral} value=STRING;
 	public XbaseGrammarAccess.XStringLiteralElements getXStringLiteralAccess() {
-		return gaXbaseWithAnnotations.getXStringLiteralAccess();
+		return gaXbase.getXStringLiteralAccess();
 	}
 	
 	public ParserRule getXStringLiteralRule() {
 		return getXStringLiteralAccess().getRule();
 	}
-
-	//XTypeLiteral returns XExpression:
-	//	{XTypeLiteral} "typeof" "(" type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ")";
+	
+	//XTypeLiteral XExpression:
+	//	{XTypeLiteral} 'typeof' '(' type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ')';
 	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
-		return gaXbaseWithAnnotations.getXTypeLiteralAccess();
+		return gaXbase.getXTypeLiteralAccess();
 	}
 	
 	public ParserRule getXTypeLiteralRule() {
 		return getXTypeLiteralAccess().getRule();
 	}
-
-	//XThrowExpression returns XExpression:
-	//	{XThrowExpression} "throw" expression=XExpression;
+	
+	//XThrowExpression XExpression:
+	//	{XThrowExpression} 'throw' expression=XExpression;
 	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
-		return gaXbaseWithAnnotations.getXThrowExpressionAccess();
+		return gaXbase.getXThrowExpressionAccess();
 	}
 	
 	public ParserRule getXThrowExpressionRule() {
 		return getXThrowExpressionAccess().getRule();
 	}
-
-	//XReturnExpression returns XExpression:
-	//	{XReturnExpression} "return" -> expression=XExpression?;
+	
+	//XReturnExpression XExpression:
+	//	{XReturnExpression} 'return' -> expression=XExpression?;
 	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
-		return gaXbaseWithAnnotations.getXReturnExpressionAccess();
+		return gaXbase.getXReturnExpressionAccess();
 	}
 	
 	public ParserRule getXReturnExpressionRule() {
 		return getXReturnExpressionAccess().getRule();
 	}
-
-	//XTryCatchFinallyExpression returns XExpression:
-	//	{XTryCatchFinallyExpression} "try" expression=XExpression (catchClauses+=XCatchClause+ ("finally"
-	//	finallyExpression=XExpression)? | "finally" finallyExpression=XExpression);
+	
+	//XTryCatchFinallyExpression XExpression:
+	//	{XTryCatchFinallyExpression}
+	//	'try'
+	//	expression=XExpression (catchClauses+=XCatchClause+ (=> 'finally' finallyExpression=XExpression)?
+	//	| 'finally' finallyExpression=XExpression);
 	public XbaseGrammarAccess.XTryCatchFinallyExpressionElements getXTryCatchFinallyExpressionAccess() {
-		return gaXbaseWithAnnotations.getXTryCatchFinallyExpressionAccess();
+		return gaXbase.getXTryCatchFinallyExpressionAccess();
 	}
 	
 	public ParserRule getXTryCatchFinallyExpressionRule() {
 		return getXTryCatchFinallyExpressionAccess().getRule();
 	}
-
-	//XSynchronizedExpression returns XExpression:
-	//	=> ({XSynchronizedExpression} "synchronized" "(") param=XExpression ")" expression=XExpression;
+	
+	//XSynchronizedExpression XExpression:
+	//	=> ({XSynchronizedExpression}
+	//	'synchronized' '(') param=XExpression ')' expression=XExpression;
 	public XbaseGrammarAccess.XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
-		return gaXbaseWithAnnotations.getXSynchronizedExpressionAccess();
+		return gaXbase.getXSynchronizedExpressionAccess();
 	}
 	
 	public ParserRule getXSynchronizedExpressionRule() {
 		return getXSynchronizedExpressionAccess().getRule();
 	}
-
+	
 	//XCatchClause:
-	//	"catch" "(" declaredParam=FullJvmFormalParameter ")" expression=XExpression;
+	//	=> 'catch' '(' declaredParam=FullJvmFormalParameter ')' expression=XExpression;
 	public XbaseGrammarAccess.XCatchClauseElements getXCatchClauseAccess() {
-		return gaXbaseWithAnnotations.getXCatchClauseAccess();
+		return gaXbase.getXCatchClauseAccess();
 	}
 	
 	public ParserRule getXCatchClauseRule() {
 		return getXCatchClauseAccess().getRule();
 	}
-
+	
+	//QualifiedName:
+	//	ValidID (=> '.' ValidID)*;
+	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
+		return gaXbase.getQualifiedNameAccess();
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().getRule();
+	}
+	
 	//Number hidden():
-	//	HEX | (INT | DECIMAL) ("." (INT | DECIMAL))?;
+	//	HEX | (INT | DECIMAL) ('.' (INT | DECIMAL))?;
 	public XbaseGrammarAccess.NumberElements getNumberAccess() {
-		return gaXbaseWithAnnotations.getNumberAccess();
+		return gaXbase.getNumberAccess();
 	}
 	
 	public ParserRule getNumberRule() {
 		return getNumberAccess().getRule();
 	}
-
-	/// **
+	
+	///**
 	// * Dummy rule, for "better" downwards compatibility, since GrammarAccess generates non-static inner classes, 
 	// * which makes downstream grammars break on classloading, when a rule is removed.
-	// * /
-	//StaticQualifier:
-	//	(ValidID "::")+;
+	// */ StaticQualifier:
+	//	(ValidID '::')+;
 	public XbaseGrammarAccess.StaticQualifierElements getStaticQualifierAccess() {
-		return gaXbaseWithAnnotations.getStaticQualifierAccess();
+		return gaXbase.getStaticQualifierAccess();
 	}
 	
 	public ParserRule getStaticQualifierRule() {
 		return getStaticQualifierAccess().getRule();
 	}
-
+	
 	//terminal HEX:
-	//	("0x" | "0X") ("0".."9" | "a".."f" | "A".."F" | "_")+ ("#" (("b" | "B") ("i" | "I") | ("l" | "L")))?;
+	//	('0x' | '0X') ('0'..'9' | 'a'..'f' | 'A'..'F' | '_')+ ('#' (('b' | 'B') ('i' | 'I') | ('l' | 'L')))?;
 	public TerminalRule getHEXRule() {
-		return gaXbaseWithAnnotations.getHEXRule();
-	} 
-
+		return gaXbase.getHEXRule();
+	}
+	
 	//terminal INT returns ecore::EInt:
-	//	"0".."9" ("0".."9" | "_")*;
+	//	'0'..'9' ('0'..'9' | '_')*;
 	public TerminalRule getINTRule() {
-		return gaXbaseWithAnnotations.getINTRule();
-	} 
-
+		return gaXbase.getINTRule();
+	}
+	
 	//terminal DECIMAL:
-	//	INT (("e" | "E") ("+" | "-")? INT)? (("b" | "B") ("i" | "I" | "d" | "D") | ("l" | "L" | "d" | "D" | "f" | "F"))?;
+	//	INT (('e' | 'E') ('+' | '-')? INT)? (('b' | 'B') ('i' | 'I' | 'd' | 'D') | ('l' | 'L' | 'd' | 'D' | 'f' | 'F'))?;
 	public TerminalRule getDECIMALRule() {
-		return gaXbaseWithAnnotations.getDECIMALRule();
-	} 
-
+		return gaXbase.getDECIMALRule();
+	}
+	
 	//JvmTypeReference:
-	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)* |
-	//	XFunctionTypeRef;
+	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)*
+	//	| XFunctionTypeRef;
 	public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
-		return gaXbaseWithAnnotations.getJvmTypeReferenceAccess();
+		return gaXtype.getJvmTypeReferenceAccess();
 	}
 	
 	public ParserRule getJvmTypeReferenceRule() {
 		return getJvmTypeReferenceAccess().getRule();
 	}
-
+	
 	//ArrayBrackets:
-	//	"[" "]";
+	//	'[' ']';
 	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
-		return gaXbaseWithAnnotations.getArrayBracketsAccess();
+		return gaXtype.getArrayBracketsAccess();
 	}
 	
 	public ParserRule getArrayBracketsRule() {
 		return getArrayBracketsAccess().getRule();
 	}
-
+	
 	//XFunctionTypeRef:
-	//	("(" (paramTypes+=JvmTypeReference ("," paramTypes+=JvmTypeReference)*)? ")")? "=>" returnType=JvmTypeReference;
+	//	('(' (paramTypes+=JvmTypeReference (',' paramTypes+=JvmTypeReference)*)? ')')? '=>' returnType=JvmTypeReference;
 	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
-		return gaXbaseWithAnnotations.getXFunctionTypeRefAccess();
+		return gaXtype.getXFunctionTypeRefAccess();
 	}
 	
 	public ParserRule getXFunctionTypeRefRule() {
 		return getXFunctionTypeRefAccess().getRule();
 	}
-
+	
 	//JvmParameterizedTypeReference:
-	//	type=[JvmType|QualifiedName] ("<" arguments+=JvmArgumentTypeReference ("," arguments+=JvmArgumentTypeReference)* ">"
-	//	(=> ({JvmInnerTypeReference.outer=current} ".") type=[JvmType|ValidID] ("<" arguments+=JvmArgumentTypeReference (","
-	//	arguments+=JvmArgumentTypeReference)* ">")?)*)?;
+	//	type=[JvmType|super::QualifiedName] (=> '<' arguments+=JvmArgumentTypeReference (','
+	//	arguments+=JvmArgumentTypeReference)* '>' (=> ({JvmInnerTypeReference.outer=current} '.') type=[JvmType|ValidID] (=>
+	//	'<' arguments+=JvmArgumentTypeReference (',' arguments+=JvmArgumentTypeReference)* '>')?)*)?;
 	public XtypeGrammarAccess.JvmParameterizedTypeReferenceElements getJvmParameterizedTypeReferenceAccess() {
-		return gaXbaseWithAnnotations.getJvmParameterizedTypeReferenceAccess();
+		return gaXtype.getJvmParameterizedTypeReferenceAccess();
 	}
 	
 	public ParserRule getJvmParameterizedTypeReferenceRule() {
 		return getJvmParameterizedTypeReferenceAccess().getRule();
 	}
-
-	//JvmArgumentTypeReference returns JvmTypeReference:
+	
+	//JvmArgumentTypeReference JvmTypeReference:
 	//	JvmTypeReference | JvmWildcardTypeReference;
 	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
-		return gaXbaseWithAnnotations.getJvmArgumentTypeReferenceAccess();
+		return gaXtype.getJvmArgumentTypeReferenceAccess();
 	}
 	
 	public ParserRule getJvmArgumentTypeReferenceRule() {
 		return getJvmArgumentTypeReferenceAccess().getRule();
 	}
-
+	
 	//JvmWildcardTypeReference:
-	//	{JvmWildcardTypeReference} "?" (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded* |
-	//	constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
+	//	{JvmWildcardTypeReference} '?' (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*
+	//	| constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
 	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
-		return gaXbaseWithAnnotations.getJvmWildcardTypeReferenceAccess();
+		return gaXtype.getJvmWildcardTypeReferenceAccess();
 	}
 	
 	public ParserRule getJvmWildcardTypeReferenceRule() {
 		return getJvmWildcardTypeReferenceAccess().getRule();
 	}
-
+	
 	//JvmUpperBound:
-	//	"extends" typeReference=JvmTypeReference;
+	//	'extends' typeReference=JvmTypeReference;
 	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
-		return gaXbaseWithAnnotations.getJvmUpperBoundAccess();
+		return gaXtype.getJvmUpperBoundAccess();
 	}
 	
 	public ParserRule getJvmUpperBoundRule() {
 		return getJvmUpperBoundAccess().getRule();
 	}
-
-	//JvmUpperBoundAnded returns JvmUpperBound:
-	//	"&" typeReference=JvmTypeReference;
+	
+	//JvmUpperBoundAnded JvmUpperBound:
+	//	'&' typeReference=JvmTypeReference;
 	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
-		return gaXbaseWithAnnotations.getJvmUpperBoundAndedAccess();
+		return gaXtype.getJvmUpperBoundAndedAccess();
 	}
 	
 	public ParserRule getJvmUpperBoundAndedRule() {
 		return getJvmUpperBoundAndedAccess().getRule();
 	}
-
+	
 	//JvmLowerBound:
-	//	"super" typeReference=JvmTypeReference;
+	//	'super' typeReference=JvmTypeReference;
 	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
-		return gaXbaseWithAnnotations.getJvmLowerBoundAccess();
+		return gaXtype.getJvmLowerBoundAccess();
 	}
 	
 	public ParserRule getJvmLowerBoundRule() {
 		return getJvmLowerBoundAccess().getRule();
 	}
-
-	//JvmLowerBoundAnded returns JvmLowerBound:
-	//	"&" typeReference=JvmTypeReference;
+	
+	//JvmLowerBoundAnded JvmLowerBound:
+	//	'&' typeReference=JvmTypeReference;
 	public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
-		return gaXbaseWithAnnotations.getJvmLowerBoundAndedAccess();
+		return gaXtype.getJvmLowerBoundAndedAccess();
 	}
 	
 	public ParserRule getJvmLowerBoundAndedRule() {
 		return getJvmLowerBoundAndedAccess().getRule();
 	}
-
+	
 	//JvmTypeParameter:
 	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
 	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
-		return gaXbaseWithAnnotations.getJvmTypeParameterAccess();
+		return gaXtype.getJvmTypeParameterAccess();
 	}
 	
 	public ParserRule getJvmTypeParameterRule() {
 		return getJvmTypeParameterAccess().getRule();
 	}
-
+	
 	//QualifiedNameWithWildcard:
-	//	QualifiedName "." "*";
+	//	super::QualifiedName '.' '*';
 	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
-		return gaXbaseWithAnnotations.getQualifiedNameWithWildcardAccess();
+		return gaXtype.getQualifiedNameWithWildcardAccess();
 	}
 	
 	public ParserRule getQualifiedNameWithWildcardRule() {
 		return getQualifiedNameWithWildcardAccess().getRule();
 	}
-
+	
+	//ValidID:
+	//	ID;
+	public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
+		return gaXtype.getValidIDAccess();
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().getRule();
+	}
+	
 	//XImportSection:
-	//	importDeclarations+=XImportDeclaration+;
+	//	importDeclarations+=super::XImportDeclaration+;
 	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
-		return gaXbaseWithAnnotations.getXImportSectionAccess();
+		return gaXtype.getXImportSectionAccess();
 	}
 	
 	public ParserRule getXImportSectionRule() {
 		return getXImportSectionAccess().getRule();
 	}
-
-	//XImportDeclaration:
-	//	"import" (static?="static" extension?="extension"? importedType=[JvmDeclaredType|QualifiedNameInStaticImport]
-	//	(wildcard?="*" | memberName=ValidID) | importedType=[JvmDeclaredType|QualifiedName] |
-	//	importedNamespace=QualifiedNameWithWildcard) ";"?;
-	public XtypeGrammarAccess.XImportDeclarationElements getXImportDeclarationAccess() {
-		return gaXbaseWithAnnotations.getXImportDeclarationAccess();
-	}
 	
-	public ParserRule getXImportDeclarationRule() {
-		return getXImportDeclarationAccess().getRule();
-	}
-
 	//QualifiedNameInStaticImport:
-	//	(ValidID ".")+;
+	//	(ValidID '.')+;
 	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
-		return gaXbaseWithAnnotations.getQualifiedNameInStaticImportAccess();
+		return gaXtype.getQualifiedNameInStaticImportAccess();
 	}
 	
 	public ParserRule getQualifiedNameInStaticImportRule() {
 		return getQualifiedNameInStaticImportAccess().getRule();
 	}
-
+	
 	//terminal ID:
-	//	"^"? ("a".."z" | "A".."Z" | "$" | "_") ("a".."z" | "A".."Z" | "$" | "_" | "0".."9")*;
+	//	'^'? ('a'..'z' | 'A'..'Z' | '$' | '_') ('a'..'z' | 'A'..'Z' | '$' | '_' | '0'..'9')*;
 	public TerminalRule getIDRule() {
-		return gaXbaseWithAnnotations.getIDRule();
-	} 
-
+		return gaXtype.getIDRule();
+	}
+	
 	//terminal STRING:
-	//	"\"" ("\\" . / * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\""))* "\""? | "\'" ("\\" .
-	//	/ * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\'"))* "\'"?;
+	//	'"' ('\\' . | !('\\' | '"'))* '"'? |
+	//	"'" ('\\' . | !('\\' | "'"))* "'"?;
 	public TerminalRule getSTRINGRule() {
-		return gaXbaseWithAnnotations.getSTRINGRule();
-	} 
-
+		return gaXtype.getSTRINGRule();
+	}
+	
 	//terminal ML_COMMENT:
-	//	"/ *"->"* /";
+	//	'/*'->'*/';
 	public TerminalRule getML_COMMENTRule() {
-		return gaXbaseWithAnnotations.getML_COMMENTRule();
-	} 
-
+		return gaXtype.getML_COMMENTRule();
+	}
+	
 	//terminal SL_COMMENT:
-	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	//	'//' !('\n' | '\r')* ('\r'? '\n')?;
 	public TerminalRule getSL_COMMENTRule() {
-		return gaXbaseWithAnnotations.getSL_COMMENTRule();
-	} 
-
+		return gaXtype.getSL_COMMENTRule();
+	}
+	
 	//terminal WS:
-	//	(" " | "\t" | "\r" | "\n")+;
+	//	' ' | '\t' | '\r' | '\n'+;
 	public TerminalRule getWSRule() {
-		return gaXbaseWithAnnotations.getWSRule();
-	} 
-
+		return gaXtype.getWSRule();
+	}
+	
 	//terminal ANY_OTHER:
 	//	.;
 	public TerminalRule getANY_OTHERRule() {
-		return gaXbaseWithAnnotations.getANY_OTHERRule();
-	} 
+		return gaXtype.getANY_OTHERRule();
+	}
 }
diff --git a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/validation/AbstractActionDSLValidator.java b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/validation/AbstractActionDSLValidator.java
index 8618627..6ec8520 100644
--- a/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/validation/AbstractActionDSLValidator.java
+++ b/org.eclipse.osbp.xtext.action/src-gen/org/eclipse/osbp/xtext/action/validation/AbstractActionDSLValidator.java
@@ -10,24 +10,29 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.action.validation;
 
 import java.util.ArrayList;
 import java.util.List;
 import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.osbp.xtext.oxtype.validation.OXtypeValidator;
 
-public class AbstractActionDSLValidator extends org.eclipse.xtext.xbase.annotations.validation.XbaseWithAnnotationsValidator {
-
+public abstract class AbstractActionDSLValidator extends OXtypeValidator {
+	
 	@Override
 	protected List<EPackage> getEPackages() {
-	    List<EPackage> result = new ArrayList<EPackage>(super.getEPackages());
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/xtext/action/ActionDSL"));
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/dsl/common/types/v1"));
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/Xtext/Xbase/XAnnotations"));
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xbase"));
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/common/JavaVMTypes"));
-	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xtype"));
+		List<EPackage> result = new ArrayList<EPackage>(super.getEPackages());
+		result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/xtext/action/ActionDSL"));
+		result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/osbp/xtext/oxtype/OXtype"));
+		result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/Xtext/Xbase/XAnnotations"));
+		result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xbase"));
+		result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/common/JavaVMTypes"));
+		result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xtype"));
 		return result;
 	}
+	
 }
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/ActionDSLRuntimeModule.java b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/ActionDSLRuntimeModule.java
index c80e21d..344e3de 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/ActionDSLRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/ActionDSLRuntimeModule.java
@@ -11,50 +11,83 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.action;
+package org.eclipse.osbp.xtext.action;
 
 import javax.inject.Singleton;
 
-import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinker;
-import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
-import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.LazyJvmTypeTransientValueService;
+import org.eclipse.osbp.dsl.common.xtext.scoping.ScopingInfoProvider;
+import org.eclipse.osbp.xtext.action.formatting.ActionDSLFormatter;
+import org.eclipse.osbp.xtext.action.imports.ShouldImportProvider;
 import org.eclipse.osbp.xtext.action.jvmmodel.ActionModelGenerator;
-import org.eclipse.osbp.xtext.action.scoping.ActionScopeProvider;
+import org.eclipse.osbp.xtext.action.scoping.ActionDSLScopeProvider;
 import org.eclipse.osbp.xtext.action.valueconverter.ActionValueConverterService;
 import org.eclipse.osbp.xtext.i18n.DSLOutputConfigurationProvider;
+import org.eclipse.osbp.xtext.oxtype.imports.IShouldImportProvider;
+import org.eclipse.osbp.xtext.oxtype.imports.OXTypeRewritableImportSection;
+import org.eclipse.osbp.xtext.oxtype.linker.JvmTypeAwareLinker;
+import org.eclipse.osbp.xtext.oxtype.linking.OXTypeLinkingService;
+import org.eclipse.osbp.xtext.oxtype.resource.ExtendedJvmModelAssociator;
+import org.eclipse.osbp.xtext.oxtype.resource.IExtendedModelAssociator;
+import org.eclipse.osbp.xtext.oxtype.resource.SemanticLoadingResource;
+import org.eclipse.osbp.xtext.oxtype.scoping.IScopingInfoProvider;
+import org.eclipse.osbp.xtext.oxtype.scoping.OXDelegatingNamespaceScopeProvider;
+import org.eclipse.osbp.xtext.oxtype.serializer.JvmTypeAwareTransientValueService;
 import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.findReferences.TargetURICollector;
 import org.eclipse.xtext.generator.IGenerator;
 import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+import org.eclipse.xtext.linking.ILinkingService;
 import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.resource.persistence.IResourceStorageFacade;
 import org.eclipse.xtext.scoping.IScopeProvider;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
+import org.eclipse.xtext.xbase.imports.RewritableImportSection;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociations;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociator;
+import org.eclipse.xtext.xbase.jvmmodel.JvmModelTargetURICollector;
+import org.eclipse.xtext.xbase.resource.BatchLinkableResourceStorageFacade;
 import org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider;
 
 import com.google.inject.Binder;
+import com.google.inject.name.Names;
 
 /**
  * Use this class to register components to be used at runtime / without the
  * Equinox extension registry.
  */
-public class ActionDSLRuntimeModule extends
-		org.eclipse.osbp.xtext.action.AbstractActionDSLRuntimeModule {
+public class ActionDSLRuntimeModule extends org.eclipse.osbp.xtext.action.AbstractActionDSLRuntimeModule {
+
+	public Class<? extends IResourceStorageFacade> bindResourceStorageFacade() {
+		return BatchLinkableResourceStorageFacade.class;
+	}
+
+	public Class<? extends TargetURICollector> bindTargetURICollector() {
+		return JvmModelTargetURICollector.class;
+	}
+
 	@Override
 	public Class<? extends IGenerator> bindIGenerator() {
 		return ActionModelGenerator.class;
 	}
 
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return ActionDSLFormatter.class;
+	}
+
 	@Override
 	public Class<? extends IScopeProvider> bindIScopeProvider() {
-		return ActionScopeProvider.class;
+		return ActionDSLScopeProvider.class;
 	}
-	
-//	/**
-//	 * Only required, if fqn can not be created by appending the names of the
-//	 * semantic elements up the hierarchy.
-//	 */
-//	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
-//		return ActionQualifiedNameProvider.class;
-//	}
-//
+
+	// /**
+	// * Only required, if fqn can not be created by appending the names of the
+	// * semantic elements up the hierarchy.
+	// */
+	// public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider>
+	// bindIQualifiedNameProvider() {
+	// return ActionQualifiedNameProvider.class;
+	// }
+	//
 	@Override
 	public Class<? extends IValueConverterService> bindIValueConverterService() {
 		return ActionValueConverterService.class;
@@ -63,8 +96,7 @@
 	@Override
 	public void configure(Binder binder) {
 		super.configure(binder);
-		binder.bind(IOutputConfigurationProvider.class)
-				.to(DSLOutputConfigurationProvider.class).in(Singleton.class);
+		binder.bind(IOutputConfigurationProvider.class).to(DSLOutputConfigurationProvider.class).in(Singleton.class);
 	}
 
 	@Override
@@ -72,17 +104,56 @@
 		return SemanticLoadingResource.class;
 	}
 
-	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
-		return LazyJvmTypeLinker.class;
-	}
-
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ITransientValueService> bindSerializerITransientValueService() {
-		return LazyJvmTypeTransientValueService.class;
+	public void configureITransientValueService(Binder binder) {
+		binder.bind(ITransientValueService.class).to(JvmTypeAwareTransientValueService.class);
 	}
 
 	@Override
 	public Class<? extends XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
-		return ActionScopeProvider.class;
+		return ActionDSLScopeProvider.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return JvmTypeAwareLinker.class;
+	}
+
+	public Class<? extends ILinkingService> bindILinkingService() {
+		return OXTypeLinkingService.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.IDerivedStateComputer> bindIDerivedStateComputer() {
+		return ExtendedJvmModelAssociator.class;
+	}
+
+	public Class<? extends IExtendedModelAssociator> bindIIndexModelAssociator() {
+		return ExtendedJvmModelAssociator.class;
+	}
+
+	public Class<? extends IJvmModelAssociator> bindIJvmModelAssociator() {
+		return ExtendedJvmModelAssociator.class;
+	}
+
+	public Class<? extends IJvmModelAssociations> bindIJvmModelAssociations() {
+		return ExtendedJvmModelAssociator.class;
+	}
+
+	public Class<? extends RewritableImportSection.Factory> bindRewritableImportSection$Factory() {
+		return OXTypeRewritableImportSection.Factory.class;
+	}
+
+	public Class<? extends IScopingInfoProvider> bindIScopingInfoProvider() {
+		return ScopingInfoProvider.class;
+	}
+
+	@Override
+	public void configureIScopeProviderDelegate(Binder binder) {
+		binder.bind(IScopeProvider.class)
+				.annotatedWith(Names.named("org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.delegate"))
+				.to(OXDelegatingNamespaceScopeProvider.class);
+	}
+
+	public Class<? extends IShouldImportProvider> bindIShouldImportProvider() {
+		return ShouldImportProvider.class;
 	}
 
 }
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/ActionDsl.xtext b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/ActionDsl.xtext
index b671f02..f1bc12a 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/ActionDsl.xtext
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/ActionDsl.xtext
@@ -11,7 +11,7 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  *
  */
-grammar org.eclipse.osbp.xtext.action.ActionDSL with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+grammar org.eclipse.osbp.xtext.action.ActionDSL with org.eclipse.osbp.xtext.oxtype.OXtype
 
 import "http://osbp.eclipse.org/xtext/action/ActionDSL"
 
@@ -22,25 +22,33 @@
 import "http://www.eclipse.org/emf/2002/Ecore" as ecore 
 
 ActionModel:
+	importSection=XImportSection?
 	packages+=ActionPackage*;
 
 ActionPackage:
 	{ActionPackage} 'package' name=QualifiedName
-	('{' (imports+=ActionImport)* (toolbars+=ActionToolbar)* '}' )?;
+	('{' 
+		(commands+=ActionCommand)*
+		(toolbars+=ActionToolbar)* 
+	'}')?;
 
+ActionCommand:
+	{ActionCommand} 'command' name=ID
+	(hasDescription?='describedBy' description=TRANSLATABLESTRING)?
+	(hasKeyBinding?='keyBinding' keyBinding=STRING)?
+	actionType = ActionType;
+	
 ActionToolbar:
-	{ActionToolbar} 'toolbar' name=ID (description?='described by' descriptionValue=TRANSLATABLESTRING)?
+	{ActionToolbar} 'toolbar' name=ID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
 	('items' '{' (actions+=ActionButton)* '}')?;
 	
 ActionButton:
-	{ActionButton} 'item' name=TRANSLATABLEID (description?='described by' descriptionValue=TRANSLATABLESTRING)?
-	('icon' iconURI=STRING)?
-	('group' group = [func::FunctionLibraryGroup]	('canExecute' canexecute = [func::FunctionLibraryFunction])? & ('executeParameter' executeparameter = [func::FunctionLibraryFunction])?)?
-	actionType = ActionType
-	('message' message=[msg::MessageItem|QualifiedName])?;
+	{ActionButton} 'item' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
+	'command' command=[ActionCommand]
+	('icon' iconURI=STRING)?;
 	
 ActionType:
-	ActionTask | ActionSelectWorkload | ActionDialog | ActionReport |ActionChart | ActionWorkflow | ActionGeneric | ActionDatainterchange;
+	ActionTask | ActionSelectWorkload | ActionDialog | ActionReport |ActionChart | ActionWorkflow | ActionFunction | ActionDatainterchange | ActionUI;
 	
 ActionTask:
 	'taskAction' action=TaskActionEnum;
@@ -63,27 +71,25 @@
 ActionDatainterchange:
 	'datainterchangeAction' action=DatainterchangeActionEnum dataRef=[data::DataInterchange];
 
-ActionGeneric:
-	'genericAction' action=STRING;
+ActionUI:
+	'userinterfaceAction' action=UIActionEnum;
+
+ActionFunction:
+	'functionalAction' 
+	'group' actionGroup=[func::FunctionLibraryActionGroup] 
+	'canExecute' canExecute=[func::FunctionLibraryCanExecute]
+	((hasExecuteImmediate?='executeImmediate' executeImmediate=[func::FunctionLibraryExecute] 
+		(hasMessage?='messageCategory' messageCategory=[msg::MessageCategory] 
+		'onFailMessage' onFailMessage=[msg::MessageItem] (hasSuccessMessage?='onSuccessMessage' onSuccessMessage=[msg::MessageItem])?)?
+	)|
+	(hasExecuteLater?='executeLater' executeLater=[func::FunctionLibraryExecute]
+		(hasStartedMessage?='messageCategory' messageCategory=[msg::MessageCategory] 
+		'onStartedMessage' onStartedMessage=[msg::MessageItem])?
+	));
 
 ActionParameter:
 	{ActionParameter} 'parameter' parameter = [func::FunctionLibraryParameter];
 	
-ActionImport returns types::LImport:
-	'import' importedNamespace=ActionQualifiedNameWithWildCard;
-
-SignedNumber returns ecore::EDouble:
-	'-'? Number;
-	
-ActionQualifiedNameWithWildCard:
-	QualifiedName ('.' '*')?;
-	
-QualifiedName:
-  ValidID (=>'.' ValidID)*;
-  
-ValidID:
-	ID;
-
 TRANSLATABLEID:
 	ID;
 		
@@ -113,4 +119,8 @@
 
 enum DatainterchangeActionEnum:
 	DATAINTERCHANGE_ACTION_IMPORT='Import' | DATAINTERCHANGE_ACTION_EXPORT='Export'; 
+
+enum UIActionEnum:
+	NEXT_PART = 'NextPart' |
+	PREVIOUS_PART = 'PreviousPart';
 	
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/GenerateActionDsl.mwe2 b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/GenerateActionDsl.mwe2
index a77144e..ad3e96a 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/GenerateActionDsl.mwe2
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/GenerateActionDsl.mwe2
@@ -13,157 +13,91 @@
  */
  module org.eclipse.osbp.xtext.action.GenerateActionDsl
 
-import org.eclipse.emf.mwe.utils.*
-import org.eclipse.xtext.generator.*
-import org.eclipse.xtext.ui.generator.*
-import org.eclipse.osbp.dsl.mwe.*
-import org.eclipse.osbp.xtext.basic.generator.*
 
-var projectName = "org.eclipse.osbp.xtext.action"
-var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/xtext/action/ActionDsl.xtext"
-var fileExtensions = "action"
-var runtimeProject = "../${projectName}"
-var generateXtendStub = true
-var encoding = "UTF-8"
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.xtext.generator.*
+import org.eclipse.xtext.xtext.generator.model.project.*
+
+var rootPath = ".."
+
+var fileHeaderText = "/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext \${version}
+ *
+ */
+
+"
+
 
 Workflow {
-	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
-	bean = org.eclipse.xtext.mwe.Reader {
-		register = xcore
+
+	component = XtextGenerator {
+		configuration = {
+			project = StandardProjectConfig {
+				baseName = "org.eclipse.osbp.xtext.action"
+				rootPath = rootPath
+				genericIde = {
+					enabled = true
+					name = "org.eclipse.osbp.xtext.action.ide"
+				}
+				runtimeTest = {
+					enabled = true
+				}
+				eclipsePlugin = {
+					enabled = true
+				}
+				eclipsePluginTest = {
+					enabled = false
+				}
+				createEclipseMetaData = true
+			}
+			code = {
+				encoding = "UTF-8"
+				lineDelimiter = "\n"
+				fileHeader = fileHeaderText
+			}
+		}
+
+		language = StandardLanguage {
+			name = "org.eclipse.osbp.xtext.action.ActionDsl"
+			fileExtensions = "action"
+			
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.action/model/ActionDSL.xcore"
+			
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.oxtype/model/OXtype.ecore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.oxtype/model/OXtype.genmodel"
+			referencedResource = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.functionlibrarydsl/model/FunctionLibraryDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.messagedsl/model/MessageDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.datainterchange/model/DataDSL.xcore"
+			
+			
+			generateXtendStubs = false
+			
+			serializer = {
+				generateStub = false
+			}
+			validator = {
+			// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+			}
+
+			generator = {
+				generateStub = false
+				generateJavaMain = false
+				generateXtendStub = false
+			}
+
+		}
 	}
-    bean = MavenStandaloneSetup {
-    	scanClassPath = true
-    	platformUri = "${runtimeProject}/.."
-		registerGenModelFile 		= "platform:/resource/${projectName}/model/ActionDSL.xcore"
-		registerGeneratedEPackage 	= "org.eclipse.osbp.xtext.action.ActionDSLPackage"
-		registerGenModelFile 		= "platform:/resource/org.eclipse.osbp.xtext.action/model/ActionDSL.xcore"
-
-		registerGenModelFile 		= "platform:/resource/org.eclipse.osbp.xtext.functionlibrarydsl/model/FunctionLibraryDSL.xcore"
-		registerGeneratedEPackage 	= "org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage"
-
-		registerGenModelFile 		= "platform:/resource/org.eclipse.osbp.xtext.messagedsl/model/MessageDSL.xcore"
-		registerGeneratedEPackage 	= "org.eclipse.osbp.xtext.messagedsl.MessageDSLPackage"
-
-		registerGenModelFile 		= "platform:/resource/org.eclipse.osbp.xtext.datainterchange/model/DataDSL.xcore"
-		registerGeneratedEPackage 	= "org.eclipse.osbp.xtext.datainterchange.DataDSLPackage"
-
-		registerGenModelFile 		= "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
-		registerGeneratedEPackage 	= "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
-		
-		registerGenModelFile 		= "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel"
-		registerEcoreFile 			= "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.ecore"
-		registerGenModelFile 		= "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
-		registerEcoreFile 			= "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"
-		registerEcoreFile 			= "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
-		registerEcoreFile 			= "platform:/resource/org.eclipse.xtext.xbase/model/XAnnotations.ecore"
-    }
-    
-    component = DirectoryCleaner {
-    	directory = "${runtimeProject}/src-gen"
-    }
-    
-    component = DirectoryCleaner {
-    	directory = "${runtimeProject}.ui/src-gen"
-    }
-    
-    component = DirectoryCleaner {
-    	directory = "${runtimeProject}.tests/src-gen"
-    }
-    
-    component = Generator {
-    	pathRtProject = runtimeProject
-    	pathUiProject = "${runtimeProject}.ui"
-    	pathTestProject = "${runtimeProject}.tests"
-    	projectNameRt = projectName
-    	projectNameUi = "${projectName}.ui"
-    	encoding = encoding
-    	language = auto-inject {
-    		uri = grammarURI
-    
-    		// Java API to access grammar elements (required by several other fragments)
-    		fragment = grammarAccess.GrammarAccessFragment auto-inject {}
-    
-    		// generates Java API for the generated EPackages
-    		fragment = ecore.EMFGeneratorFragment auto-inject {}
-    
-    		// the old serialization component
-    		// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}    
-    
-    		// serializer 2.0
-    		fragment = serializer.SerializerFragment auto-inject {
-    			generateStub = false
-    		}
-    
-    		// a custom ResourceFactory for use with EMF
-    		fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
-    
-    		// The antlr parser generator fragment.
-    		fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
-    		//  options = {
-    		//      backtrack = true
-    		//  }
-    		}
-    
-    		// Xtend-based API for validation
-    		fragment = validation.ValidatorFragment auto-inject {
-    		//    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
-    		//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
-    		}
-    
-    		// old scoping and exporting API
-    		// fragment = scoping.ImportURIScopingFragment auto-inject {}
-    		// fragment = exporting.SimpleNamesFragment auto-inject {}
-    
-    		// scoping and exporting API
-    		fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
-    		fragment = exporting.QualifiedNamesFragment auto-inject {}
-    		fragment = builder.BuilderIntegrationFragment auto-inject {}
-    
-    		// generator API
-    		fragment = generator.GeneratorFragment auto-inject {}
-    
-    		// formatter API
-    		fragment = formatting.FormatterFragment auto-inject {}
-    
-    		// labeling API
-    		fragment = labeling.LabelProviderFragment auto-inject {}
-    
-    		// outline API
-    		fragment = outline.OutlineTreeProviderFragment auto-inject {}
-    		fragment = outline.QuickOutlineFragment auto-inject {}
-    
-    		// quickfix API
-    		fragment = quickfix.QuickfixProviderFragment auto-inject {}
-    
-    		// content assist API
-    		fragment = contentAssist.ContentAssistFragment auto-inject {}
-    
-    		// generates a more lightweight Antlr parser and lexer tailored for content assist
-    		fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {}
-    
-    		// generates junit test support classes into Generator#pathTestProject
-    		fragment = junit.Junit4Fragment auto-inject {}
-    
-    		// rename refactoring
-    		fragment = refactoring.RefactorElementNameFragment auto-inject {}
-    
-    		// provides the necessary bindings for java types integration
-    		fragment = types.TypesGeneratorFragment auto-inject {}
-    
-    		// generates the required bindings only if the grammar inherits from Xbase
-    		fragment = xbase.XbaseGeneratorFragment auto-inject {}
-    		
-    		// generates the required bindings only if the grammar inherits from Xtype
-    		fragment = xbase.XtypeGeneratorFragment auto-inject {}
-    
-    		// provides a preference page for template proposals
-    		fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
-    
-    		// provides a compare view
-    		fragment = compare.CompareFragment auto-inject {}
-    		
-    		// parse grammar and generate i18n grammar
-            fragment = org.eclipse.osbp.xtext.basic.generator.BasicDslGrammarI18nGenerator auto-inject {}
-    	}
-    }
 }
+
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/E4Helper.java b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/E4Helper.java
new file mode 100644
index 0000000..8218226
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/E4Helper.java
@@ -0,0 +1,50 @@
+package org.eclipse.osbp.xtext.action.common;
+
+import org.eclipse.e4.ui.model.application.ui.MElementContainer;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+
+public class E4Helper {
+	private E4Helper() {
+	}
+
+	public static final MUIElement getPart(boolean next, MUIElement element, boolean wasActive) {
+		int direction = +1;
+		if(!next) {
+			direction = -1;
+		}
+		MElementContainer<MUIElement> parent = element.getParent();
+		MUIElement child = null;
+		if (wasActive) {
+			int index = parent.getChildren().size() - 1;
+			if(!next) {
+				index = 0;
+			}
+			if (parent.getChildren().indexOf(element) == index) {
+				return getPart(next, parent, wasActive);
+			} else {
+				child = parent.getChildren().get(parent.getChildren().indexOf(element) + direction);
+			}
+		} else {
+			child = parent.getChildren().get(parent.getChildren().indexOf(element));
+		}
+		if (child instanceof MPart) {
+			return child;
+		}
+		if (child instanceof MElementContainer<?> && !((MElementContainer<?>) child).getChildren().isEmpty()) {
+			int index = 0;
+			if(!next) {
+				index = ((MElementContainer<?>) child).getChildren().size() - 1;
+			}
+			return getPart(next, (MUIElement) ((MElementContainer<?>) child).getChildren().get(index), false);
+		}
+		if (parent instanceof MElementContainer<?> && !parent.getChildren().isEmpty()) {
+			int index = 0;
+			if(!next) {
+				index = parent.getChildren().size() - 1;
+			}
+			return getPart(next, (MUIElement) parent.getChildren().get(index), false);
+		}
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/IToolbarAction.java b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/IToolbarAction.java
index 54efcab..9f197ad 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/IToolbarAction.java
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/IToolbarAction.java
@@ -19,7 +19,8 @@
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 
 public interface IToolbarAction {
-
+	static final String TOOLBAR_UUID = "TOOLBAR_UUID";
+	
 	void createToolbar(IEclipseContext eclipseContext, IPresentationEngine renderingEngine, IThemeResourceService themeResourceService);
 
 	MToolBar getToolBar();
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/TaskHelper.java b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/TaskHelper.java
new file mode 100644
index 0000000..44db678
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/common/TaskHelper.java
@@ -0,0 +1,156 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.action.common;
+
+import java.util.HashMap;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.bpm.api.BPMStatus;
+import org.eclipse.osbp.bpm.api.BPMTaskSummary;
+import org.eclipse.osbp.ui.api.user.IUser;
+
+public class TaskHelper {
+
+	private TaskHelper() {
+	}
+
+	private static final String ADMINISTRATOR = "Administrator";
+
+	public static final class Context extends HashMap<String, Object> {
+		private static final long serialVersionUID = -2810090198332954979L;
+
+		public static final String USER = "user";
+		public static final String TABLEVIEW = "table";
+		public static final String TASKSUMMARY = "taskSummary";
+	}
+
+	public static long getTaskId(IEclipseContext context) {
+		BPMTaskSummary task = context.get(BPMTaskSummary.class);
+		if(task != null) {
+			return task.getId();
+		}
+		return 0;
+	}
+
+	public static boolean isTask(IEclipseContext context, BPMStatus status) {
+		BPMTaskSummary task = context.get(BPMTaskSummary.class); 
+		return (task != null && task.getStatus() != null && task.getStatus().equals(status));
+	}
+
+	public static BPMStatus getStatusType(int code) {
+		for (BPMStatus type : BPMStatus.values()) {
+			if (type.ordinal() == code) {
+				return type;
+			}
+		}
+		return null;
+	}
+	
+	private static String getUserName(IEclipseContext context) {
+		IUser user = context.get(IUser.class);
+		if(user != null) {
+			return user.getUserName();
+		}
+		return ADMINISTRATOR;
+	}
+
+	public static final boolean claimCanExecute(final IEclipseContext context) {
+		if (ADMINISTRATOR.equals(getUserName(context))) {
+			return false;
+		}
+		return TaskHelper.isTask(context, BPMStatus.Created);
+	}
+
+	public static final boolean startCanExecute(final IEclipseContext context) {
+		if (ADMINISTRATOR.equals(getUserName(context))) {
+			return false;
+		}
+		return TaskHelper.isTask(context, BPMStatus.Ready);
+	}
+
+	public static final boolean resumeCanExecute(final IEclipseContext context) {
+		if (ADMINISTRATOR.equals(getUserName(context))) {
+			return false;
+		}
+		boolean suspended = TaskHelper.isTask(context, BPMStatus.Suspended);
+		boolean progress = TaskHelper.isTask(context, BPMStatus.InProgress);
+		return (suspended || progress);
+	}
+
+	public static final boolean stopCanExecute(final IEclipseContext context) {
+		if (ADMINISTRATOR.equals(getUserName(context))) {
+			return false;
+		}
+		return TaskHelper.isTask(context, BPMStatus.InProgress);
+	}
+
+	public static final boolean skipCanExecute(final IEclipseContext context) {
+		if (ADMINISTRATOR.equals(getUserName(context))) {
+			return false;
+		}
+		return TaskHelper.isTask(context, BPMStatus.InProgress);
+	}
+
+	public static final boolean delegateCanExecute(final IEclipseContext context) {
+		if (ADMINISTRATOR.equals(getUserName(context))) {
+			return false;
+		}
+		return TaskHelper.isTask(context, BPMStatus.InProgress);
+	}
+
+	public static final boolean forwardCanExecute(final IEclipseContext context) {
+		if (ADMINISTRATOR.equals(getUserName(context))) {
+			return false;
+		}
+		return TaskHelper.isTask(context, BPMStatus.InProgress);
+	}
+
+	public static final boolean registerCanExecute(final IEclipseContext context) {
+		return TaskHelper.isTask(context, BPMStatus.Ready);
+	}
+
+	public static final boolean removeCanExecute(final IEclipseContext context) {
+		return TaskHelper.isTask(context, BPMStatus.Ready);
+	}
+
+	public static final boolean completeCanExecute(final IEclipseContext context) {
+		if (ADMINISTRATOR.equals(getUserName(context))) {
+			return false;
+		}
+		return TaskHelper.isTask(context, BPMStatus.InProgress);
+	}
+
+	public static final boolean suspendCanExecute(final IEclipseContext context) {
+		if (ADMINISTRATOR.equals(getUserName(context))) {
+			return false;
+		}
+		return TaskHelper.isTask(context, BPMStatus.InProgress);
+	}
+
+	public static final boolean releaseCanExecute(final IEclipseContext context) {
+		return TaskHelper.isTask(context, BPMStatus.InProgress);
+	}
+
+	public static final boolean activateCanExecute(final IEclipseContext context) {
+		return TaskHelper.isTask(context, BPMStatus.Created);
+	}
+
+	public static final boolean failCanExecute(final IEclipseContext context) {
+		return TaskHelper.isTask(context, BPMStatus.InProgress);
+	}
+
+	public static final boolean exitCanExecute(final IEclipseContext context) {
+		return TaskHelper.isTask(context, BPMStatus.InProgress);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/formatting/ActionDSLFormatter.xtend b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/formatting/ActionDSLFormatter.xtend
index 1e9f3d8..f9427b3 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/formatting/ActionDSLFormatter.xtend
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/formatting/ActionDSLFormatter.xtend
@@ -14,18 +14,17 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.action.formatting
 
 //import javax.inject.Inject
 
 import com.google.inject.Inject
-import org.eclipse.osbp.utils.xtext.GenericFormatter
+import org.eclipse.osbp.xtext.oxtype.formatting.GenericFormatter
+import org.eclipse.osbp.xtext.oxtype.services.OXtypeGrammarAccess
 import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
 import org.eclipse.xtext.formatting.impl.FormattingConfig
-import org.eclipse.xtext.xbase.services.XtypeGrammarAccess
-//import org.eclipse.osbp.xtext.action.services.ActionDSLGrammarAccess
 
+//import org.eclipse.osbp.xtext.action.services.ActionDSLGrammarAccess
 /**
  * This class contains custom formatting description.
  * 
@@ -36,13 +35,14 @@
  */
 class ActionDSLFormatter extends AbstractDeclarativeFormatter {
 
-//	@Inject extension ActionDSLGrammarAccess
-	@Inject XtypeGrammarAccess grammarAccess
+	//	@Inject extension ActionDSLGrammarAccess
+	@Inject OXtypeGrammarAccess grammarAccess
 
 	override protected void configureFormatting(FormattingConfig c) {
-		val genericFormatter	= new GenericFormatter()
+		val genericFormatter = new GenericFormatter()
 
-		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "ActionToolbar", "ActionImport" )
-		genericFormatter.genericFormatting( c, grammar, grammarAccess )
+		genericFormatter.formatFirstLevelBlocks(c, grammar.grammar, "ActionCommand")
+		genericFormatter.formatFirstLevelBlocks(c, grammar.grammar, "ActionToolbar")
+		genericFormatter.genericFormatting(c, grammar, grammarAccess)
 	}
 }
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/imports/ShouldImportProvider.java b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/imports/ShouldImportProvider.java
new file mode 100644
index 0000000..cc94b4a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/imports/ShouldImportProvider.java
@@ -0,0 +1,38 @@
+package org.eclipse.osbp.xtext.action.imports;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.osbp.xtext.datainterchange.DataDSLPackage;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchange;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryActionGroup;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryCanExecute;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryDSLPackage;
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryExecute;
+import org.eclipse.osbp.xtext.messagedsl.MessageCategory;
+import org.eclipse.osbp.xtext.messagedsl.MessageDSLPackage;
+import org.eclipse.osbp.xtext.messagedsl.MessageItem;
+import org.eclipse.osbp.xtext.oxtype.imports.DefaultShouldImportProvider;
+
+public class ShouldImportProvider extends DefaultShouldImportProvider {
+
+	protected boolean doShouldImport(EObject toImport, EReference eRef,
+			EObject context) {
+		return toImport instanceof FunctionLibraryActionGroup ||
+				toImport instanceof FunctionLibraryCanExecute ||
+				toImport instanceof FunctionLibraryExecute ||
+				toImport instanceof DataInterchange ||
+				toImport instanceof MessageCategory ||
+				toImport instanceof MessageItem;
+	}
+	
+	protected boolean doShouldProposeAllElements(EObject object, EReference reference) {
+		EClass type = reference.getEReferenceType();
+		return FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_ACTION_GROUP.isSuperTypeOf(type)
+			|| FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_CAN_EXECUTE.isSuperTypeOf(type)
+			|| FunctionLibraryDSLPackage.Literals.FUNCTION_LIBRARY_EXECUTE.isSuperTypeOf(type)
+			|| DataDSLPackage.Literals.DATA_INTERCHANGE.isSuperTypeOf(type)
+			|| MessageDSLPackage.Literals.MESSAGE_CATEGORY.isSuperTypeOf(type)
+			|| MessageDSLPackage.Literals.MESSAGE_ITEM.isSuperTypeOf(type);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.xtend
index 78dadc3..7e24657 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.xtend
@@ -12,52 +12,70 @@
  * 
  * 
  *  This copyright notice shows up in the generated Java code
- *
+ * 
  */
- 
+
 package org.eclipse.osbp.xtext.action.jvmmodel
 
-import java.util.concurrent.ExecutorService
 import javax.inject.Inject
+import javax.inject.Named
+import org.eclipse.e4.core.contexts.Active
 import org.eclipse.e4.core.contexts.IEclipseContext
 import org.eclipse.e4.core.di.annotations.CanExecute
 import org.eclipse.e4.core.di.annotations.Execute
-import org.eclipse.e4.core.services.events.IEventBroker
+import org.eclipse.e4.core.di.annotations.Optional
+import org.eclipse.e4.ui.model.application.MApplication
+import org.eclipse.e4.ui.model.application.ui.MUIElement
+import org.eclipse.e4.ui.model.application.ui.basic.MPart
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar
 import org.eclipse.e4.ui.workbench.IPresentationEngine
-import org.eclipse.osbp.persistence.IPersistenceService
+import org.eclipse.emf.common.util.Enumerator
+import org.eclipse.osbp.core.api.persistence.IPersistenceService
+import org.eclipse.osbp.datainterchange.api.IDataInterchange
+import org.eclipse.osbp.runtime.common.event.IEventDispatcher
+import org.eclipse.osbp.ui.api.contextfunction.ICommandsProvider
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService
 import org.eclipse.osbp.ui.api.user.IUser
-import org.eclipse.osbp.utils.constants.GeneratorConstants
+import org.eclipse.osbp.utils.annotation.CommonUtils
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService
 import org.eclipse.osbp.xtext.action.ActionButton
 import org.eclipse.osbp.xtext.action.ActionChart
+import org.eclipse.osbp.xtext.action.ActionCommand
 import org.eclipse.osbp.xtext.action.ActionDatainterchange
 import org.eclipse.osbp.xtext.action.ActionDialog
-import org.eclipse.osbp.xtext.action.ActionGeneric
+import org.eclipse.osbp.xtext.action.ActionFunction
 import org.eclipse.osbp.xtext.action.ActionPackage
 import org.eclipse.osbp.xtext.action.ActionReport
 import org.eclipse.osbp.xtext.action.ActionSelectWorkload
 import org.eclipse.osbp.xtext.action.ActionTask
 import org.eclipse.osbp.xtext.action.ActionToolbar
+import org.eclipse.osbp.xtext.action.ActionUI
 import org.eclipse.osbp.xtext.action.ActionWorkflow
+import org.eclipse.osbp.xtext.action.DialogActionEnum
+import org.eclipse.osbp.xtext.action.UIActionEnum
 import org.eclipse.osbp.xtext.action.common.IToolbarAction
 import org.eclipse.osbp.xtext.datainterchange.DataInterchange
 import org.eclipse.osbp.xtext.datainterchange.jvmmodel.DataDSLJvmModelInferrer
 import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage
-import org.eclipse.osbp.xtext.functionlibrarydsl.util.Library.Context
+import org.eclipse.osbp.xtext.messagedsl.MessagePackage
 import org.eclipse.xtext.common.types.JvmDeclaredType
 import org.eclipse.xtext.common.types.JvmField
 import org.eclipse.xtext.common.types.JvmGenericType
+import org.eclipse.xtext.common.types.JvmTypeReference
 import org.eclipse.xtext.common.types.JvmVisibility
 import org.eclipse.xtext.naming.IQualifiedNameProvider
 import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer
 import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
 import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.osgi.service.component.annotations.Component
 import org.slf4j.Logger
+import org.eclipse.osbp.ui.api.customfields.IBlobService
 
 /**
  * <p>Infers a JVM model from the source model.</p> 
- *
+ * 
  * <p>The JVM model should contain all elements that would appear in the Java code 
  * which is generated from the source model. Other models link against the JVM model rather than the source model.</p>     
  */
@@ -66,146 +84,200 @@
 	@Inject extension JvmTypesBuilder
 	@Inject extension IQualifiedNameProvider
 	@Inject extension DataDSLJvmModelInferrer data
+	@Inject extension CommonUtils
+	@Inject
 
-   	def dispatch void infer(ActionPackage pkg, IJvmDeclaredTypeAcceptor acceptor, boolean isPreIndexingPhase) {
-		for(toolbar:pkg.toolbars) {
+	var String contextClassName = ""
+	var String clsName = ""
+
+	def dispatch void infer(ActionPackage pkg, IJvmDeclaredTypeAcceptor acceptor, boolean isPreIndexingPhase) {
+		for (toolbar : pkg.toolbars) {
 			var toolbarClass = toolbar.toClass(toolbar.className)
-	   		acceptor.accept(toolbarClass,
-	   			[
-				 	documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
-				 	superTypes += _typeReferenceBuilder.typeRef(IToolbarAction)
-	   				it.toToolbarConstructor(toolbar)
-	   				it.toToolbarFields(toolbar)
-					it.toToolbarOperations(toolbar)
-	   			])
-			
-			for(action: toolbar.actions) {
-				var handlerClass = toolbar.toClass(toolbar.className(action))
-		   		acceptor.accept(handlerClass,
-		   			[
-					 	documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
-		   				it.toHandlerFields(action)
-						it.toHandlerOperations(toolbar, action)
-						it.toHandlerConstructor(action)
-		   			])
+			acceptor.accept(toolbarClass, [
+				superTypes += _typeReferenceBuilder.typeRef(IToolbarAction)
+				it.toToolbarConstructor(toolbar)
+				it.toToolbarFields(toolbar)
+				it.toToolbarOperations(toolbar)
+				it.fileHeader = pkg.documentation
+			])
+
+		}
+		// the command handlers
+		for (command : pkg.commands) {
+			var handlerClass = command.toClass(command.className)
+			acceptor.accept(handlerClass, [
+				it.toHandlerFields(command)
+				it.toHandlerOperations(command)
+				it.fileHeader = pkg.documentation
+			])
+		}
+		// the commands class
+		clsName = pkg.name.toString.concat(".").concat("CommandsProvider")
+		val cls = pkg.toClass(clsName)
+		cls.superTypes.add(_typeReferenceBuilder.typeRef(ICommandsProvider))
+		acceptor.accept(cls, [
+			var annotationRef = _annotationTypesBuilder.annotationRef(typeof(Component))
+			annotationRef.addAnnAttr(pkg, "service", _typeReferenceBuilder.typeRef(ICommandsProvider) as JvmTypeReference)
+			annotations += annotationRef
+			it.toCommandsConstructor(pkg)
+			it.toCommandsOperations(pkg)
+		])
+	}
+
+	def void toCommandsOperations(JvmGenericType type, ActionPackage pkg) {
+		// init
+		type.members += pkg.toMethod("init", _typeReferenceBuilder.typeRef(Void::TYPE), [
+			annotations += _annotationTypesBuilder.annotationRef(Override)
+			parameters += pkg.toParameter("application", _typeReferenceBuilder.typeRef(MApplication))
+			body = [append('''«pkg.init»''')]
+		])
+	}
+
+	def init(ActionPackage pkg) {
+		var body = '''
+			if(!application.getBindingTables().isEmpty()) {
+				MBindingTable bindingTable = application.getBindingTables().get(0);
+				MKeyBinding keyBinding;
+				MCommand command;
+				MHandler commandHandler;
+		'''
+		for (command : pkg.commands) {
+			body = '''
+				«body»
+					command = CommandsFactoryImpl.eINSTANCE.createCommand();
+					command.setElementId("«pkg.fullyQualifiedName».«command.name»");
+					command.setCommandName("«command.name»");
+					«IF command.hasDescription»command.setDescription("«command.description»");«ENDIF»
+					application.getCommands().add(command);
+					commandHandler = CommandsFactoryImpl.eINSTANCE.createHandler();
+					commandHandler.setElementId("«pkg.fullyQualifiedName».«command.name»Handler");
+					commandHandler.setCommand(command);
+					commandHandler.setContributionURI("bundleclass://"+FrameworkUtil.getBundle(«command.className».class).getSymbolicName()+"/«command.className»");
+					application.getHandlers().add(commandHandler);
+					«IF command.hasKeyBinding»
+						keyBinding = CommandsFactoryImpl.eINSTANCE.createKeyBinding();
+						keyBinding.setElementId("«pkg.fullyQualifiedName».«command.name»Keybinding");
+						keyBinding.setKeySequence("«command.keyBinding.replace(" ", "+")»");
+						keyBinding.setCommand(command);
+						bindingTable.getBindings().add(keyBinding);«ENDIF»
+			'''
+		}
+		body = '''
+			«body»
 			}
-	   	}
-   	}
-	
+		'''
+		return body
+	}
+
+	def void toCommandsConstructor(JvmGenericType type, ActionPackage pkg) {
+		type.members += pkg.toConstructor([
+			body = [append('''''')]
+		])
+	}
+
 	/**
 	 * <p>build the constructors including the uuid.</p> 
-	 *
+	 * 
 	 */
-	def void toToolbarConstructor(JvmGenericType type, ActionToolbar toolbar){
+	def void toToolbarConstructor(JvmGenericType type, ActionToolbar toolbar) {
 		type.members += toolbar.toConstructor(
 		[
 			parameters += toolbar.toParameter("uuid", _typeReferenceBuilder.typeRef(String))
 			body = [
 				append(
 					'''
-					super();
-					this.uuid = uuid;''')]
+				super();
+				this.uuid = uuid;''')
+			]
 		])
 	}
 
 	def String className(ActionToolbar toolbar) {
-		return className(toolbar, null)
+		var pkg = toolbar.eContainer as ActionPackage
+		return pkg.name.toString.concat(".").concat(toolbar.name.toFirstUpper).concat("Toolbar")
 	}
-	
-	def String className(ActionToolbar toolbar, ActionButton action) {
-		var actionId = ""
-		var pkg = toolbar.eContainer as ActionPackage 
-		if (action != null) {
-			switch action.actionType {
-				ActionTask: {
-					actionId = (action.actionType as ActionTask).action.literal
-				}
-				ActionSelectWorkload: {
-					actionId = (action.actionType as ActionSelectWorkload).action.literal
-				}
-				ActionDialog: {
-					actionId = (action.actionType as ActionDialog).action.literal
-				}
-				ActionReport: {
-					actionId = (action.actionType as ActionReport).action.literal
-				}
-				ActionChart: {
-					actionId = (action.actionType as ActionChart).action.literal
-				}
-				ActionWorkflow: {
-					actionId = (action.actionType as ActionWorkflow).action.literal
-				}
-				ActionDatainterchange: {
-					actionId = (action.actionType as ActionDatainterchange).action.literal
-				}
-				ActionGeneric: {
-					 actionId = (action.actionType as ActionGeneric).action
-				}
-			}
-		}
-		return pkg.name.toString.concat(".").concat(toolbar.name.toFirstUpper).concat(actionId.toFirstUpper).concat("Action")
+
+	def String className(ActionCommand actionCommand) {
+		var pkg = actionCommand.eContainer as ActionPackage
+		return pkg.name.toString.concat(".").concat(actionCommand.name.toFirstUpper).concat("Action")
 	}
-	
+
 	def void toToolbarOperations(JvmGenericType type, ActionToolbar toolbar) {
 		// create a toolbar
 		type.members += toolbar.toMethod("createToolbar", _typeReferenceBuilder.typeRef(Void::TYPE), [
-   			parameters += toolbar.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
-   			parameters += toolbar.toParameter("renderingEngine", _typeReferenceBuilder.typeRef(IPresentationEngine))
-   			parameters += toolbar.toParameter("themeResourceService", _typeReferenceBuilder.typeRef(IThemeResourceService))
-   			
+			parameters += toolbar.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+			parameters += toolbar.toParameter("renderingEngine", _typeReferenceBuilder.typeRef(IPresentationEngine))
+			parameters +=
+				toolbar.toParameter("themeResourceService", _typeReferenceBuilder.typeRef(IThemeResourceService))
 			visibility = JvmVisibility.PUBLIC
 			annotations += _annotationTypesBuilder.annotationRef(Override)
 			body = [append('''«toolbar.createToolbar»''')]
 		])
-   		// get toolbar
-   		type.members += toolbar.toMethod("getToolBar", _typeReferenceBuilder.typeRef(MToolBar), [
+		// get toolbar
+		type.members += toolbar.toMethod("getToolBar", _typeReferenceBuilder.typeRef(MToolBar), [
 			annotations += _annotationTypesBuilder.annotationRef(Override)
-   			body = [ append('''return toolbar;''')]
-   		])
+			body = [append('''return toolbar;''')]
+		])
+		// set command
+		type.members += toolbar.toMethod("setCommand", _typeReferenceBuilder.typeRef(Void::TYPE), [
+			parameters += toolbar.toParameter("commandName", _typeReferenceBuilder.typeRef(String))
+			parameters += toolbar.toParameter("toolItem", _typeReferenceBuilder.typeRef(MHandledToolItem))
+			parameters += toolbar.toParameter("application", _typeReferenceBuilder.typeRef(MApplication))
+			visibility = JvmVisibility.PRIVATE
+			body = [
+				append(
+			'''
+					for(MCommand command:application.getCommands()) {
+						if(command.getCommandName().equals(commandName)) {
+							toolItem.setCommand(command);
+							break;
+						}
+					}
+				''')
+			]
+		])
 	}
-	
+
 	def String createToolbar(ActionToolbar toolbar) {
 		var body = ""
 		body = '''
-		«body»
-		this.eclipseContext = eclipseContext;
-		this.themeResourceService = themeResourceService;
-
-		MenuFactoryImpl factory = MenuFactoryImpl.eINSTANCE;
-		MDirectToolItem toolItem = null;
-
-		MPart part = (MPart)eclipseContext.get(MPart.class);
-		if(part != null) {
-			toolbar = part.getToolbar();
-			if (toolbar == null) {
-				toolbar = factory.createToolBar();
-				toolbar.setElementId(uuid);
-				eclipseContext.set("«toolbar.name»_TOOLBAR_ID", toolbar.getElementId());
-				toolbar.setToBeRendered(true);
-				part.setToolbar(toolbar);
-				
-				Panel panel = (Panel) part.getWidget();
-				if (panel != null) {		// it is already visible in terms of vaadin
-					//create toolbar area
-					VerticalLayout rootContainer = (VerticalLayout)panel.getContent();
-					CssLayout toolbarArea = new CssLayout();
-					toolbarArea.setStyleName(EnumCssClass.MPARTTOOLBARAREA.toString());
-					toolbarArea.setSizeUndefined();
-					toolbarArea.setWidth("100%");
-					rootContainer.addComponentAsFirst(toolbarArea);
+			«body»
+			MenuFactoryImpl factory = MenuFactoryImpl.eINSTANCE;
+			MHandledToolItem toolItem = null;
+			
+			MApplication application = (MApplication)eclipseContext.get(MApplication.class);
+			MPart part = (MPart)eclipseContext.get(MPart.class);
+			if(part != null) {
+				toolbar = part.getToolbar();
+				if (toolbar == null) {
+					toolbar = factory.createToolBar();
+					toolbar.setElementId(uuid);
+					part.getContext().set("«IToolbarAction.TOOLBAR_UUID»", toolbar.getElementId());
+					toolbar.setToBeRendered(true);
+					part.setToolbar(toolbar);
 					
-					//create toolbar
-					Component toolbarWidget = (Component) renderingEngine.createGui(toolbar);
-					((AbstractLayout)toolbarWidget).setSizeUndefined();
-					toolbarWidget.setStyleName(EnumCssClass.MPARTTOOLBAR.toString());
-					toolbarArea.addComponent(toolbarWidget);
+					Panel panel = (Panel) part.getWidget();
+					if (panel != null) {		// it is already visible in terms of vaadin
+						//create toolbar area
+						VerticalLayout rootContainer = (VerticalLayout)panel.getContent();
+						CssLayout toolbarArea = new CssLayout();
+						toolbarArea.setStyleName(EnumCssClass.MPARTTOOLBARAREA.toString());
+						toolbarArea.setSizeUndefined();
+						toolbarArea.setWidth("100%");
+						rootContainer.addComponentAsFirst(toolbarArea);
+						
+						//create toolbar
+						Component toolbarWidget = (Component) renderingEngine.createGui(toolbar);
+						((AbstractLayout)toolbarWidget).setSizeUndefined();
+						toolbarWidget.setStyleName(EnumCssClass.MPARTTOOLBAR.toString());
+						toolbarArea.addComponent(toolbarWidget);
+					}
 				}
-			}
-			else {
-				toolbar.getChildren().removeIf(c -> c.isToBeRendered());
-			}
+				else {
+					toolbar.getChildren().removeIf(c -> c.isToBeRendered());
+				}
 		'''
-		for(action : toolbar.actions) {
+		for (action : toolbar.actions) {
 			body = '''«body»«toolbar.createToolItem(action)»'''
 		}
 		body = '''
@@ -213,176 +285,297 @@
 		}'''
 		return body
 	}
-	
-	def String createToolItem(ActionToolbar toolbar, ActionButton action) {
-		var body = ""
-		body = '''
-		«body»
-			toolItem = factory.createDirectToolItem();
+
+	def createToolItem(ActionToolbar toolbar, ActionButton action) '''
+		
+			toolItem = factory.createHandledToolItem();
+			toolItem.setElementId(UUID.randomUUID().toString());
 			toolItem.setType(ItemType.PUSH);
-			toolItem.setTooltip("«action.name»");
+			toolItem.setTooltip("«IF action.command.actionType instanceof ActionDatainterchange && (action.command.actionType as ActionDatainterchange).dataRef.description»«(action.command.actionType as ActionDatainterchange).dataRef.descriptionValue»«ELSE»«action.name»«ENDIF»«IF action.command.hasKeyBinding».keybinding.«action.command.keyBinding»«ENDIF»");
 			toolItem.setIconURI(themeResourceService.getThemeURI("«action.iconURI»", ThemeResourceType.ICON));
 			toolItem.setEnabled(true);
 			toolItem.setToBeRendered(true);
 			toolItem.setVisible(true);
-			toolItem.setContributionURI("bundleclass://"+FrameworkUtil.getBundle(«toolbar.className(action)».class).getSymbolicName()+"/«toolbar.className(action)»");
+			setCommand("«action.command.name»", toolItem, application);
 			toolbar.getChildren().add(toolItem);
-			«IF action.actionType instanceof ActionReport»
-			toolItem.getTags().add("«(action.actionType as ActionReport).action.literal»");
+			«IF action.command.actionType instanceof ActionReport»
+				toolItem.getTags().add("«(action.command.actionType as ActionReport).action.literal»");
 			«ENDIF»
-		'''
-		return body 
-	}
-	
+	'''
+
 	def void toToolbarFields(JvmGenericType type, ActionToolbar toolbar) {
-   		var JvmField field = null
-   		// create logger
-		field = toolbar.toField("log", _typeReferenceBuilder.typeRef(Logger))[setInitializer([append('''org.slf4j.LoggerFactory.getLogger("toolbar")''')])]
-   		field.static = true
-   		field.visibility = JvmVisibility::PRIVATE
+		var JvmField field = null
+		// create logger
+		field = toolbar.toField("log", _typeReferenceBuilder.typeRef(Logger)) [
+			setInitializer([append('''org.slf4j.LoggerFactory.getLogger("toolbar")''')])
+		]
+		field.static = true
+		field.visibility = JvmVisibility::PRIVATE
 		type.members += field
 		// create UUID
 		field = toolbar.toField("uuid", _typeReferenceBuilder.typeRef(String))
-   		field.visibility = JvmVisibility::PRIVATE
+		field.visibility = JvmVisibility::PRIVATE
 		type.members += field
-		field = toolbar.toField("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
-		type.members += field
-		field = toolbar.toField("themeResourceService", _typeReferenceBuilder.typeRef(IThemeResourceService))
-		type.members += field	
 		field = toolbar.toField("toolbar", _typeReferenceBuilder.typeRef(MToolBar))
-		type.members += field	
+		type.members += field
 	}
-   	
+
 	// handler stuff	
-	def void toHandlerFields(JvmGenericType type, ActionButton action) {
-   		var JvmField field = null
-   		// create logger
-		field = action.toField("log", _typeReferenceBuilder.typeRef(Logger))[setInitializer([append('''org.slf4j.LoggerFactory.getLogger("action")''')])]
-   		field.static = true
-   		field.visibility = JvmVisibility::PRIVATE
+	def void toHandlerFields(JvmGenericType type, ActionCommand action) {
+		var JvmField field = null
+		// create logger
+		field = action.toField("log", _typeReferenceBuilder.typeRef(Logger)) [
+			setInitializer([append('''org.slf4j.LoggerFactory.getLogger("action")''')])
+		]
+		field.static = true
+		field.visibility = JvmVisibility::PRIVATE
 		type.members += field
-		field = action.toField("eventBroker", _typeReferenceBuilder.typeRef(IEventBroker)) [annotations += _annotationTypesBuilder.annotationRef(Inject)]
-		type.members += field
-		field = action.toField("user", _typeReferenceBuilder.typeRef(IUser)) [annotations += _annotationTypesBuilder.annotationRef(Inject)]
-		type.members += field
-		field = action.toField("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext)) [annotations += _annotationTypesBuilder.annotationRef(Inject)]
-		type.members += field
-		field = action.toField("persistenceService", _typeReferenceBuilder.typeRef(IPersistenceService)) [annotations += _annotationTypesBuilder.annotationRef(Inject)]
-		type.members += field
-		field = action.toField("executorService", _typeReferenceBuilder.typeRef(ExecutorService))
-   		field.static = true
-		type.members += field
-	}
-	
-	/**
-	 * <p>build the constructors to be used by an e4 application.</p> 
-	 *
-	 */
-	def void toHandlerConstructor(JvmDeclaredType type, ActionButton action) {
-		type.members += action.toConstructor([
-			body = [ append('''«action.handlerConstructor»''')]
+		// create a field
+		type.members += action.toField("activePart", _typeReferenceBuilder.typeRef(MUIElement))
+		// create a getter
+		type.members += action.toMethod("getActivePart", _typeReferenceBuilder.typeRef(MUIElement), [
+			body = [append('''return activePart;''')]
 		])
+
 	}
-	
-	def handlerConstructor(ActionButton action) {
-		'''
-		executorService = Executors.newFixedThreadPool(10);
-		'''
-	}
-	
+
+	def activatePart() '''
+		if (part == null) {
+			return;
+		}
+		if(activePart != null && activePart.getWidget() instanceof Panel) {
+			((Panel)activePart.getWidget()).removeStyleName(EnumCssClass.HAS_FOCUS.styleName());
+		}
+		if(part.getWidget() instanceof Panel) {
+			activePart = part;
+			((Panel)activePart.getWidget()).addStyleName(EnumCssClass.HAS_FOCUS.styleName());
+			   IE4Dialog dialog = part.getContext().get(IE4Dialog.class);
+			   if (dialog != null) {
+			       ContextInjectionFactory.invoke(dialog, Focus.class, part.getContext());
+			   }
+			   IE4Table table = part.getContext().get(IE4Table.class);
+			   if (table != null) {
+			       ContextInjectionFactory.invoke(table, Focus.class, part.getContext());
+			   }
+			   IE4Focusable focusable = part.getContext().get(IE4Focusable.class);
+			   if (focusable != null) {
+			       ContextInjectionFactory.invoke(focusable, Focus.class, part.getContext());
+			   }
+		}
+	'''
+
 	/**
 	 * <p>build the methods to be used as toolbar handlers by an e4 application.</p> 
-	 *
+	 * 
 	 */
-	def void toHandlerOperations(JvmDeclaredType type, ActionToolbar toolbar, ActionButton action) {
-   		// create getContent
-   		type.members += action.toMethod("getContent", _typeReferenceBuilder.typeRef(Context), [
-   			visibility = JvmVisibility::PRIVATE
-   			body = [ append('''«action.getContent»''')]
-   		])
-   		// create canExecute
-   		type.members += action.toMethod("canExecute", _typeReferenceBuilder.typeRef(boolean), [
-   			annotations += _annotationTypesBuilder.annotationRef(CanExecute)
-   			body = [ append('''«action.canExecute»''')]
-   		])
-   		// create execute
-   		type.members += action.toMethod("execute", _typeReferenceBuilder.typeRef(Void::TYPE), [
-   			annotations += _annotationTypesBuilder.annotationRef(Execute)
-   			parameters += action.toParameter("eventBroker", _typeReferenceBuilder.typeRef(IEventBroker))
-   			body = [ append('''«action.execute(toolbar)»''')]
-   		])
-   	}
-	
-	def execute(ActionButton action, ActionToolbar toolbar) {
-		var packageFQN = ""
-		if(action.group != null) {
-			var FunctionLibraryPackage pkg = action.group.eContainer as FunctionLibraryPackage
-			packageFQN = pkg.fullyQualifiedName.toString
+	def void toHandlerOperations(JvmDeclaredType type, ActionCommand action) {
+		if(action.actionType instanceof ActionUI && ((action.actionType as ActionUI).action == UIActionEnum.NEXT_PART || (action.actionType as ActionUI).action == UIActionEnum.PREVIOUS_PART)) {
+			// create activePart
+			type.members += action.toMethod("activePart", _typeReferenceBuilder.typeRef(Void::TYPE), [
+				annotations += _annotationTypesBuilder.annotationRef(Inject)
+				var para = action.toParameter("part", _typeReferenceBuilder.typeRef(MPart))
+				para.annotations += _annotationTypesBuilder.annotationRef(typeof(Active))
+				para.annotations += _annotationTypesBuilder.annotationRef(typeof(Optional))
+				parameters += para
+				body = [append('''«activatePart»''')]
+			])
 		}
+		// create canExecute
+		type.members += action.toMethod("canExecute", _typeReferenceBuilder.typeRef(boolean), [
+			annotations += _annotationTypesBuilder.annotationRef(CanExecute)
+			switch (action.actionType) {
+				ActionTask:
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+				ActionSelectWorkload: {
+				}
+				ActionDialog:
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+				ActionReport: {
+				}
+				ActionChart: {
+				}
+				ActionWorkflow: {
+				}
+				ActionDatainterchange: {
+					parameters += action.toParameter("dataInterchange", _typeReferenceBuilder.typeRef(IDataInterchange))
+				}
+				ActionFunction: {
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+				}
+				ActionUI: {
+				}
+			}
+			body = [append('''«action.canExecute»''')]
+		])
+		// create execute
+		type.members += action.toMethod("execute", _typeReferenceBuilder.typeRef(Void::TYPE), [
+			annotations += _annotationTypesBuilder.annotationRef(Execute)
+			switch (action.actionType) {
+				ActionTask: {
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+					parameters += action.toParameter("eventDispatcher", _typeReferenceBuilder.typeRef(IEventDispatcher))
+				}
+				ActionSelectWorkload: {
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+					parameters += action.toParameter("eventDispatcher", _typeReferenceBuilder.typeRef(IEventDispatcher))
+				}
+				ActionDialog: {
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+					parameters += action.toParameter("eventDispatcher", _typeReferenceBuilder.typeRef(IEventDispatcher))
+				}
+				ActionReport: {
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+					parameters += action.toParameter("eventDispatcher", _typeReferenceBuilder.typeRef(IEventDispatcher))
+				}
+				ActionChart: {
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+					parameters += action.toParameter("eventDispatcher", _typeReferenceBuilder.typeRef(IEventDispatcher))
+				}
+				ActionWorkflow: {
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+					parameters += action.toParameter("eventDispatcher", _typeReferenceBuilder.typeRef(IEventDispatcher))
+				}
+				ActionDatainterchange: {
+					parameters += action.toParameter("eventDispatcher", _typeReferenceBuilder.typeRef(IEventDispatcher))
+					parameters += action.toParameter("persistenceService", _typeReferenceBuilder.typeRef(IPersistenceService))
+					parameters += action.toParameter("dataInterchange", _typeReferenceBuilder.typeRef(IDataInterchange))
+					parameters += action.toParameter("executorService", _typeReferenceBuilder.typeRef(VaadinExecutorService))
+					parameters += action.toParameter("dslMetadataService", _typeReferenceBuilder.typeRef(IDSLMetadataService))
+					parameters += action.toParameter("blobService", _typeReferenceBuilder.typeRef(IBlobService))
+					parameters += action.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+				}
+				ActionFunction: {
+					parameters += action.toParameter("eclipseContext", _typeReferenceBuilder.typeRef(IEclipseContext))
+					if((action.actionType as ActionFunction).hasExecuteLater) {
+						parameters += action.toParameter("executorService", _typeReferenceBuilder.typeRef(VaadinExecutorService))
+					}
+					if ((action.actionType as ActionFunction).hasMessage || (action.actionType as ActionFunction).hasStartedMessage) {
+						parameters += action.toParameter("dslMetadataService", _typeReferenceBuilder.typeRef(IDSLMetadataService))
+						parameters += action.toParameter("user", _typeReferenceBuilder.typeRef(IUser))
+					}
+				}
+				ActionUI: {
+				}
+			}
+			body = [append('''«action.execute»''')]
+		])
+	}
+
+	def execute(ActionCommand command) {
+		switch command.actionType {
+			ActionDatainterchange:
+				((command.actionType as ActionDatainterchange).dataRef as DataInterchange)?.doInterchange(command)
+			default:
+				command.doExecute
+		}
+	}
+
+	def doInterchange(DataInterchange dataInterchange, ActionCommand action) '''
+	«data.getBasicRunConfiguration(dataInterchange, true, data.getFileURL(dataInterchange), (action.actionType as ActionDatainterchange).action.literal)»
+	«dataInterchange.getDefaultVariableName()».setDirection(WorkerThreadRunnable.Direction.«(action.actionType as ActionDatainterchange).action.literal.toUpperCase»);
+	«dataInterchange.getDefaultVariableName()».setEventDispatcher(eventDispatcher);
+	«dataInterchange.getDefaultVariableName()».setBlobService(blobService);
+	Notification.show(dslMetadataService.translate(user.getLocale().toLanguageTag(), "datainterchangeStarted"),Notification.Type.HUMANIZED_MESSAGE);
+	executorService.invokeLater(null, new Runnable() {
+		@Override
+		public void run() {
+			«dataInterchange.getDefaultVariableName()».run();
+		}
+	});'''
+
+	def String doExecute(ActionCommand command) {
+		var String actionEnumStr
+		switch command.actionType {
+			ActionTask: actionEnumStr = (command.actionType as ActionTask).action.getEnumString.toString
+			ActionSelectWorkload: actionEnumStr = (command.actionType as ActionSelectWorkload).action.getEnumString.
+				toString
+			ActionDialog: actionEnumStr = (command.actionType as ActionDialog).action.getEnumString.toString
+			ActionReport: actionEnumStr = (command.actionType as ActionReport).action.getEnumString.toString
+			ActionChart: actionEnumStr = (command.actionType as ActionChart).action.getEnumString.toString
+			ActionWorkflow: actionEnumStr = (command.actionType as ActionWorkflow).action.getEnumString.toString
+			ActionFunction: actionEnumStr = "Execute"
+			ActionUI: actionEnumStr = (command.actionType as ActionUI).action.getEnumString.toString
+		}
+		if (command.actionType instanceof ActionFunction) {
+			var func = command.actionType as ActionFunction
+			if (func.hasExecuteImmediate) {
+				return '''
+					«IF func.hasMessage»boolean result = «ENDIF»«(func.actionGroup.eContainer as FunctionLibraryPackage).fullyQualifiedName».«func.actionGroup.name.toString.toFirstUpper».«func.executeImmediate.name.toString»(eclipseContext);
+					«IF func.hasMessage»
+						if(!result) {
+							Notification.show(«(func.messageCategory.eContainer as MessagePackage).fullyQualifiedName».«func.messageCategory.name»Message.«func.onFailMessage.name.toFirstLower»().getShowMessage(dslMetadataService, user),Notification.Type.ERROR_MESSAGE);
+						} «IF func.hasSuccessMessage»else {
+							Notification.show(«(func.messageCategory.eContainer as MessagePackage).fullyQualifiedName».«func.messageCategory.name»Message.«func.onSuccessMessage.name.toFirstLower»().getShowMessage(dslMetadataService, user), Notification.Type.HUMANIZED_MESSAGE);
+						}«ENDIF»«ENDIF»'''
+			}
+			if (func.hasExecuteLater) {
+				return '''
+					«IF func.hasStartedMessage»
+						Notification.show(«(func.messageCategory.eContainer as MessagePackage).fullyQualifiedName».«func.messageCategory.name»Message.«func.onStartedMessage.name.toFirstLower»().getShowMessage(dslMetadataService, user),Notification.Type.HUMANIZED_MESSAGE);
+					«ENDIF»
+					executorService.invokeLater(eclipseContext, new Runnable() {
+						@Override
+						public void run() {
+							«(func.actionGroup.eContainer as FunctionLibraryPackage).fullyQualifiedName».«func.actionGroup.name.toString.toFirstUpper».«func.executeLater.name.toString»(eclipseContext);
+						}
+					});'''
+			}
+		} else if (command.actionType instanceof ActionUI && (command.actionType as ActionUI).action == UIActionEnum.NEXT_PART) {
+			return '''
+				log.debug("execute next part");
+				MUIElement newActivePart = E4Helper.getPart(true, getActivePart(), true);
+				if(newActivePart != null && newActivePart instanceof MPart) {
+					((MPart)newActivePart).getContext().activate();
+				}'''
+		} else if (command.actionType instanceof ActionUI && (command.actionType as ActionUI).action == UIActionEnum.PREVIOUS_PART) {
+			return '''
+				log.debug("execute previous part");
+				MUIElement newActivePart = E4Helper.getPart(false, getActivePart(), true);
+				if(newActivePart != null && newActivePart instanceof MPart) {
+					((MPart)newActivePart).getContext().activate();
+				}'''
+		} else {
+			return '''
+			log.debug("action execute called for «command.name»");
+			String uuid = (String)eclipseContext.get("«IToolbarAction.TOOLBAR_UUID»");
+			EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.ACTION, uuid, "«command.fullyQualifiedName»");
+			evnt.addItem(EventDispatcherDataTag.BUTTON_ID, «actionEnumStr»);
+			«IF command.actionType instanceof ActionTask»
+				evnt.addItem(EventDispatcherDataTag.TASK_ID, TaskHelper.getTaskId(eclipseContext));
+			«ENDIF»
+			eventDispatcher.sendEvent(evnt);'''
+		}
+	}
+
+	def getEnumString(Enumerator actionEnum) '''«actionEnum.class.simpleName».«actionEnum.name»'''
+
+	def canExecute(ActionCommand action) {
 		switch action.actionType {
-			ActionTask:				(action.actionType as ActionTask).action.literal.doBroadcast(action, toolbar, packageFQN)
-			ActionSelectWorkload:	(action.actionType as ActionSelectWorkload).action.literal.doBroadcast(action, toolbar, packageFQN)
-			ActionDialog:			(action.actionType as ActionDialog).action.literal.doBroadcast(action, toolbar, packageFQN)
-			ActionReport:			(action.actionType as ActionReport).action.literal.doBroadcast(action, toolbar, packageFQN)
-			ActionChart:			(action.actionType as ActionChart).action.literal.doBroadcast(action, toolbar, packageFQN)
-			ActionWorkflow:			(action.actionType as ActionWorkflow).action.literal.doBroadcast(action, toolbar, packageFQN)
-			ActionDatainterchange:	(action.actionType as ActionDatainterchange).dataRef?.doInterchange(action)
-			ActionGeneric:			(action.actionType as ActionGeneric).action.doBroadcast(action, toolbar, packageFQN)
-		}
-	}
-	
-	def doInterchange(DataInterchange dataInterchange, ActionButton action)
-		'''
-		«data.getBasicRunConfiguration(dataInterchange, true, data.getFileURL(dataInterchange))»
-		«dataInterchange.getDefaultVariableName()».setDirection(WorkerThreadRunnable.Direction.«(action.actionType as ActionDatainterchange).action.literal.toUpperCase»);
-		«dataInterchange.getDefaultVariableName()».setEventBroker(eventBroker);
-		executorService.execute(«dataInterchange.getDefaultVariableName()»);'''
-	
-	def doBroadcast(String identifier, ActionButton action, ActionToolbar toolbar, String packageFQN)
-		'''
-		log.debug("action execute called for «action.name»");
-		String uuid = (String)eclipseContext.get("«toolbar.name»_TOOLBAR_ID");
-		eventBroker.send(EventBrokerMsg.ACTION_BUTTON_EXECUTE_PREFIX+"«toolbar.name»Action"+uuid, new EventBrokerMsg(-1, "«identifier»", «IF action.group==null || action.executeparameter==null»0L«ELSE»«packageFQN».«action.group.name.toString.toFirstUpper».«action.executeparameter.name.toString»(getContent())«ENDIF»));'''
-	
-	def canExecute(ActionButton action) {
-		if (action != null) {
-			if (action.group != null) {
-				var pkg = action.group.eContainer as FunctionLibraryPackage
-				'''
-				«IF action.group==null»return true;«ELSE»return «pkg.fullyQualifiedName.toString».«action.group.name.toString.toFirstUpper».«action.canexecute.name.toString»(getContent());«ENDIF»'''
+			ActionTask: {
+				return '''return TaskHelper.«(action.actionType as ActionTask).action.literal.toFirstLower»CanExecute(eclipseContext);'''
 			}
-			else
-			{
-				'''return true;'''
+			ActionDialog: {
+				if ((action.actionType as ActionDialog).action == DialogActionEnum.DIALOG_ACTION_SAVE) {
+					return '''
+					IE4Dialog dialog = eclipseContext.get(IE4Dialog.class);
+					if (dialog == null) {
+						return false;
+					}
+					boolean result = (boolean) ContextInjectionFactory.invoke(dialog, IsValid.class, eclipseContext);
+					return result;'''
+				} else {
+					return '''return true;'''
+				}
 			}
+			ActionFunction: {
+				var pkg = (action.actionType as ActionFunction).actionGroup.eContainer as FunctionLibraryPackage
+				return '''return «pkg.fullyQualifiedName.toString».«(action.actionType as ActionFunction).actionGroup.name.toString.toFirstUpper».«(action.actionType as ActionFunction).canExecute.name.toString»(eclipseContext);'''
+			}
+			ActionDatainterchange: {
+				return '''return «IF action.actionType instanceof ActionDatainterchange»(dataInterchange!=null)«ELSE»true«ENDIF»;'''
+			}
+			default:
+				return '''return true;'''
 		}
-		else
-		{
-			'''return true;'''
-		}
-	}
-	
-	def getContent(ActionButton action) {
-		'''
-	    Context result = new Context();
-	    result.put(Context.USER, user);
-	    MContext context = eclipseContext.get(MContext.class);
-	    if (context instanceof MPart && ((MPart)context).getTransientData().containsKey("tablePositionInfo")) {
-	    	result.put(Context.TABLE, ((MPart)context).getTransientData().get("tablePositionInfo"));
-	    	result.put(Context.TASKSUMMARY, ((MPart)context).getTransientData().get("taskSummary"));
-	    }
-	    else if (context instanceof MTrimmedWindow) {
-	    	if (((MTrimmedWindow)context).getSelectedElement()!=null && ((MTrimmedWindow)context).getSelectedElement() instanceof MPerspectiveStack) {
-	    		MPerspectiveStack perspectiveStack = (MPerspectiveStack)((MTrimmedWindow)context).getSelectedElement();
-	    		if (perspectiveStack.getSelectedElement() != null && perspectiveStack.getSelectedElement() instanceof MPerspective) {
-	    			MPerspective perspective = (MPerspective)perspectiveStack.getSelectedElement();
-	    			if (perspective.getTransientData().containsKey("taskSummary")) {
-	    				result.put(Context.TASKSUMMARY, perspective.getTransientData().get("taskSummary"));
-	    			}
-	    		}
-	    	}
-	    }
-	    return result;'''
 	}
 }
-
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionModelGenerator.xtend b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionModelGenerator.xtend
index be1b702..1ae4c85 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionModelGenerator.xtend
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/jvmmodel/ActionModelGenerator.xtend
@@ -20,44 +20,79 @@
 import com.vaadin.ui.AbstractLayout
 import com.vaadin.ui.Component
 import com.vaadin.ui.CssLayout
+import com.vaadin.ui.Notification
 import com.vaadin.ui.Panel
 import com.vaadin.ui.UI
 import com.vaadin.ui.VerticalLayout
+import java.io.File
+import java.io.FileInputStream
+import java.io.IOException
+import java.io.PrintWriter
+import java.io.StringWriter
 import java.lang.reflect.Method
+import java.util.HashMap
 import java.util.Locale
-import java.util.concurrent.Executors
+import java.util.Map
+import java.util.Properties
+import java.util.UUID
 import javax.inject.Inject
+import org.eclipse.e4.core.contexts.ContextInjectionFactory
 import org.eclipse.e4.core.di.extensions.EventUtils
 import org.eclipse.e4.core.services.translation.TranslationService
+import org.eclipse.e4.ui.di.Focus
+import org.eclipse.e4.ui.model.application.MApplication
+import org.eclipse.e4.ui.model.application.commands.MBindingContext
+import org.eclipse.e4.ui.model.application.commands.MBindingTable
+import org.eclipse.e4.ui.model.application.commands.MCommand
+import org.eclipse.e4.ui.model.application.commands.MHandler
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsFactoryImpl
 import org.eclipse.e4.ui.model.application.ui.MContext
+import org.eclipse.e4.ui.model.application.ui.MUIElement
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack
 import org.eclipse.e4.ui.model.application.ui.basic.MPart
 import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow
 import org.eclipse.e4.ui.model.application.ui.menu.ItemType
-import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.osbp.core.api.persistence.IPersistenceService
 import org.eclipse.osbp.eventbroker.EventBrokerMsg
-import org.eclipse.osbp.persistence.IPersistenceService
+import org.eclipse.osbp.preferences.ProductConfiguration
+import org.eclipse.osbp.runtime.common.annotations.IsValid
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherCommand
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherDataTag
+import org.eclipse.osbp.ui.api.contextfunction.ICommandsProvider
+import org.eclipse.osbp.ui.api.e4.IE4Dialog
+import org.eclipse.osbp.ui.api.e4.IE4Table
+import org.eclipse.osbp.ui.api.themes.EnumCssClass
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService
-import org.eclipse.osbp.utils.theme.EnumCssClass
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService
+import org.eclipse.osbp.xtext.action.ChartActionEnum
+import org.eclipse.osbp.xtext.action.DatainterchangeActionEnum
+import org.eclipse.osbp.xtext.action.DialogActionEnum
+import org.eclipse.osbp.xtext.action.ReportActionEnum
+import org.eclipse.osbp.xtext.action.SelectWorkloadActionEnum
+import org.eclipse.osbp.xtext.action.TaskActionEnum
+import org.eclipse.osbp.xtext.action.WorkflowActionEnum
+import org.eclipse.osbp.xtext.action.common.E4Helper
+import org.eclipse.osbp.xtext.action.common.TaskHelper
 import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils
 import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable
 import org.eclipse.osbp.xtext.i18n.I18NModelGenerator
 import org.eclipse.xtext.generator.IFileSystemAccess
 import org.eclipse.xtext.xbase.compiler.GeneratorConfig
 import org.eclipse.xtext.xbase.compiler.ImportManager
-import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
 import org.osgi.framework.FrameworkUtil
 import org.osgi.service.event.Event
-import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType
-import org.eclipse.osbp.xtext.functionlibrarydsl.util.Library
+import org.eclipse.osbp.ui.api.e4.IE4Focusable
 
 class ActionModelGenerator extends I18NModelGenerator {
-	@Inject extension JvmTypesBuilder
 	@Inject extension BasicDslGeneratorUtils
 	
 	override createAppendable(EObject context, ImportManager importManager, GeneratorConfig config) {
@@ -75,7 +110,7 @@
 			, CssLayout
 			, Component
 			, AbstractLayout
-			, MDirectToolItem
+			, MHandledToolItem
 			, MContext
 			, MTrimmedWindow
 			, MPerspectiveStack
@@ -92,8 +127,46 @@
 			, EnumCssClass
 			, IPersistenceService
 			, WorkerThreadRunnable
-			, Executors
-			, Library.Context
+			, EventDispatcherEvent
+			, EventDispatcherCommand
+			, EventDispatcherDataTag
+			, DialogActionEnum
+			, ReportActionEnum
+			, TaskActionEnum
+			, SelectWorkloadActionEnum
+			, ChartActionEnum
+			, WorkflowActionEnum
+			, DatainterchangeActionEnum
+			, IOException
+			, File
+			, FileInputStream
+			, Properties
+			, ProductConfiguration
+			, PrintWriter
+			, StringWriter
+			, ContextInjectionFactory
+			, IsValid
+			, IE4Dialog
+			, IE4Table
+			, IE4Focusable
+			, Focus
+			, MUIElement
+			, CommandsFactoryImpl
+			, MApplication
+			, MBindingTable
+			, MBindingContext
+			, MKeyBinding
+			, MCommand
+			, MHandler
+			, UUID
+			, ICommandsProvider
+			, HashMap
+			, Map
+			, TaskHelper
+			, E4Helper
+			, Notification
+			, Notification.Type
+			, VaadinExecutorService
 		)
 		super.createAppendable(context, importManager, config)
 	}
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/scoping/ActionDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/scoping/ActionDSLScopeProvider.xtend
new file mode 100644
index 0000000..626f755
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/scoping/ActionDSLScopeProvider.xtend
@@ -0,0 +1,55 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.action.scoping
+
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EReference
+import org.eclipse.osbp.xtext.action.ActionDSLPackage
+import org.eclipse.osbp.xtext.action.ActionFunction
+import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryActionGroup
+import org.eclipse.xtext.scoping.Scopes
+
+/**
+ * This class contains custom scoping description.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping
+ * on how and when to use it.
+ */
+class ActionDSLScopeProvider extends AbstractActionDSLScopeProvider {
+
+	override getScope(EObject context, EReference reference) {
+		if (reference == ActionDSLPackage.Literals.ACTION_FUNCTION__CAN_EXECUTE) {
+			return getScope_ActionFunctionCanExecute(context as ActionFunction, reference)
+		} else if (reference == ActionDSLPackage.Literals.ACTION_FUNCTION__EXECUTE_IMMEDIATE) {
+			return getScope_ActionFunctionExecuteImmediate(context as ActionFunction, reference)
+		} else if (reference == ActionDSLPackage.Literals.ACTION_FUNCTION__EXECUTE_LATER) {
+			return getScope_ActionFunctionExecuteLater(context as ActionFunction, reference)
+		}
+		return super.getScope(context, reference)
+	}
+	
+	def getScope_ActionFunctionCanExecute(ActionFunction context, EReference reference) {
+		var result = <EObject>newArrayList
+		for (can : (context.actionGroup as FunctionLibraryActionGroup).canExecutes) {
+			result.add(can)
+		}
+		return Scopes::scopeFor(result)
+	}
+
+	def getScope_ActionFunctionExecuteImmediate(ActionFunction context, EReference reference) {
+		var result = <EObject>newArrayList
+		for (immediate : (context.actionGroup as FunctionLibraryActionGroup).executes) {
+			result.add(immediate)
+		}
+		return Scopes::scopeFor(result)
+	}
+
+	def getScope_ActionFunctionExecuteLater(ActionFunction context, EReference reference) {
+		var result = <EObject>newArrayList
+		for (later : (context.actionGroup as FunctionLibraryActionGroup).executes) {
+			result.add(later)
+		}
+		return Scopes::scopeFor(result)
+	}
+}
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/validation/ActionDSLValidator.xtend b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/validation/ActionDSLValidator.xtend
index 9c5e4d0..694b11c 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/validation/ActionDSLValidator.xtend
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/validation/ActionDSLValidator.xtend
@@ -1,38 +1,44 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- * 
- *  This copyright notice shows up in the generated Java code
- *
+/*
+ * generated by Xtext 2.11.0
  */
- 
 package org.eclipse.osbp.xtext.action.validation
-//import org.eclipse.xtext.validation.Check
+
+import org.eclipse.osbp.runtime.common.keystroke.KeyCodeUtil
+import org.eclipse.osbp.xtext.action.ActionCommand
+import org.eclipse.osbp.xtext.action.ActionDSLPackage
+import org.eclipse.xtext.validation.Check
 
 /**
- * Custom validation rules. 
+ * This class contains custom validation rules. 
  *
- * see http://www.eclipse.org/Xtext/documentation.html#validation
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation
  */
 class ActionDSLValidator extends AbstractActionDSLValidator {
+	
+	public static val INVALID_KEY = 'invalidKey'
 
-//  public static val INVALID_NAME = 'invalidName'
-//
-//	@Check
-//	def checkGreetingStartsWithCapital(Greeting greeting) {
-//		if (!Character.isUpperCase(greeting.name.charAt(0))) {
-//			warning('Name should start with a capital', 
-//					MyDslPackage.Literals.GREETING__NAME,
-//					INVALID_NAME)
-//		}
-//	}
+	@Check
+	def checkKeyBinding(ActionCommand command) {
+		if(command.hasKeyBinding) {
+			var error = false
+			var parts = command.keyBinding.split(" ")
+			for(part:parts) {
+				if(part.equals(parts.last)) {
+					if (KeyCodeUtil.keyLookupInteger(part) == 0) {
+						error = true
+					}
+				} else {
+					if (KeyCodeUtil.modifierLookup(part) == 0) {
+						error = true
+					}
+				}
+				if(error) {
+					warning('Invalid key given for keyBinding. Modifier must be one of CTRL ALT SHIFT, Keys separated by blanks', 
+							ActionDSLPackage.Literals.ACTION_COMMAND__KEY_BINDING,
+							INVALID_KEY)
+				}
+			}
+		}
+	}
+	
 }
diff --git a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/valueconverter/ActionQualifiedNameProvider.java b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/valueconverter/ActionQualifiedNameProvider.java
index 1763967..5f6133d 100644
--- a/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/valueconverter/ActionQualifiedNameProvider.java
+++ b/org.eclipse.osbp.xtext.action/src/org/eclipse/osbp/xtext/action/valueconverter/ActionQualifiedNameProvider.java
@@ -11,83 +11,71 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.action.valueconverter;
-
-import java.util.List;
+package org.eclipse.osbp.xtext.action.valueconverter;
 
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.xtext.naming.IQualifiedNameConverter;
 import org.eclipse.xtext.naming.QualifiedName;
-import org.eclipse.xtext.nodemodel.INode;
-import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
 import org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider;
-import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions;
-import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
-import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
-import org.eclipse.osbp.dsl.semantic.common.types.LType;
-
-import com.google.inject.Inject;
-
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
-import org.eclipse.osbp.xtext.action.ActionDSLPackage;
-import org.eclipse.osbp.xtext.action.ActionToolbar;
 
 @SuppressWarnings("restriction")
 public class ActionQualifiedNameProvider extends XbaseQualifiedNameProvider {
 
-	@Inject
-	private IQualifiedNameConverter qualifiedNameConverter;
-
-	@Inject
-	private ModelExtensions extensions;
+	// @Inject
+	// private IQualifiedNameConverter qualifiedNameConverter;
+	//
+	// @Inject
+	// private ModelExtensions extensions;
 
 	@Override
 	public QualifiedName getFullyQualifiedName(EObject obj) {
 		if (obj == null) {
 			return QualifiedName.create("");
 		}
-		if (obj instanceof ActionToolbar) {
-			ActionToolbar toolbar = (ActionToolbar) obj;
-            if (toolbar.getName() == null) {
-            	return null;
-            }
-            return qualifiedNameConverter.toQualifiedName(toolbar.getName());
-		}
-		else if (obj instanceof FunctionLibraryGroup) {
-            return qualifiedCrossReferenceNameConverter(obj, ActionDSLPackage.eINSTANCE.getActionButton_Group());
-		}
-		else if (obj instanceof FunctionLibraryFunction) {
-			return qualifiedCrossReferenceNameConverter(obj, ActionDSLPackage.eINSTANCE.getActionButton_Canexecute());
-		}
+		// if (obj instanceof ActionToolbar) {
+		// ActionToolbar toolbar = (ActionToolbar) obj;
+		// if (toolbar.getName() == null) {
+		// return null;
+		// }
+		// return qualifiedNameConverter.toQualifiedName(toolbar.getName());
+		// }
+		// else if (obj instanceof FunctionLibraryGroup) {
+		// return qualifiedCrossReferenceNameConverter(obj,
+		// ActionDSLPackage.eINSTANCE.getActionButton_Group());
+		// }
+		// else if (obj instanceof FunctionLibraryFunction) {
+		// return qualifiedCrossReferenceNameConverter(obj,
+		// ActionDSLPackage.eINSTANCE.getActionButton_Canexecute());
+		// }
 		return super.getFullyQualifiedName(obj);
 	}
 
-	// this method evaluates the cross referenced name of an object without causing cyclic lazy linking errors
-	private QualifiedName qualifiedCrossReferenceNameConverter(EObject obj, EStructuralFeature feature) {
-		List<INode> nodes = NodeModelUtils.findNodesForFeature(obj, feature);
-		if (nodes.size() == 0) {
-			return QualifiedName.create("");
-		}
-		return qualifiedNameConverter.toQualifiedName(NodeModelUtils.getTokenText(nodes.get(0)));
-	}
-	
-	public QualifiedName getFQN(LFeature lfeature){
-		   if(lfeature.getName() == null){
-		    return QualifiedName.create("");
-		   }
-		   LType type = (LType) lfeature.eContainer();
-		   LPackage pkg = extensions.getPackage(type);
-		   if (pkg != null && type != null) {
-		    final String qualifiedName = String.format("%s.%s.%s",
-		      pkg.getName(), type.getName(), lfeature.getName());
-		    if (qualifiedName == null)
-		     return null;
-		    return qualifiedNameConverter.toQualifiedName(qualifiedName);
-		   } else {
-		    return lfeature.getName() != null ? qualifiedNameConverter
-		      .toQualifiedName(lfeature.getName()) : null;
-		   }
-	  }
+	// // this method evaluates the cross referenced name of an object without
+	// causing cyclic lazy linking errors
+	// private QualifiedName qualifiedCrossReferenceNameConverter(EObject obj,
+	// EStructuralFeature feature) {
+	// List<INode> nodes = NodeModelUtils.findNodesForFeature(obj, feature);
+	// if (nodes.size() == 0) {
+	// return QualifiedName.create("");
+	// }
+	// return
+	// qualifiedNameConverter.toQualifiedName(NodeModelUtils.getTokenText(nodes.get(0)));
+	// }
+	//
+	// public QualifiedName getFQN(LFeature lfeature){
+	// if(lfeature.getName() == null){
+	// return QualifiedName.create("");
+	// }
+	// LType type = (LType) lfeature.eContainer();
+	// LPackage pkg = extensions.getPackage(type);
+	// if (pkg != null && type != null) {
+	// final String qualifiedName = String.format("%s.%s.%s",
+	// pkg.getName(), type.getName(), lfeature.getName());
+	// if (qualifiedName == null)
+	// return null;
+	// return qualifiedNameConverter.toQualifiedName(qualifiedName);
+	// } else {
+	// return lfeature.getName() != null ? qualifiedNameConverter
+	// .toQualifiedName(lfeature.getName()) : null;
+	// }
+	// }
 }
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/.gitignore b/org.eclipse.osbp.xtext.action/xtend-gen/.gitignore
new file mode 100644
index 0000000..26bd54f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/.gitignore
@@ -0,0 +1,6 @@
+/.ActionDSLFormatter.xtendbin
+/.ActionDSLJvmModelInferrer.xtendbin
+/.ActionDSLScopeProvider.xtendbin
+/.ActionDSLValidator.xtendbin
+/.ActionModelGenerator.xtendbin
+/.ActionScopeProvider.xtendbin
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/formatting/.gitignore b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/formatting/.gitignore
new file mode 100644
index 0000000..4ce7d1d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/formatting/.gitignore
@@ -0,0 +1 @@
+/ActionDSLFormatter.java
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/formatting/ActionDSLFormatter.java b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/formatting/ActionDSLFormatter.java
index a1801f9..ba09fcd 100644
--- a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/formatting/ActionDSLFormatter.java
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/formatting/ActionDSLFormatter.java
@@ -15,11 +15,10 @@
 package org.eclipse.osbp.xtext.action.formatting;
 
 import com.google.inject.Inject;
-import org.eclipse.osbp.utils.xtext.GenericFormatter;
-import org.eclipse.xtext.Grammar;
+import org.eclipse.osbp.xtext.oxtype.formatting.GenericFormatter;
+import org.eclipse.osbp.xtext.oxtype.services.OXtypeGrammarAccess;
 import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
 import org.eclipse.xtext.formatting.impl.FormattingConfig;
-import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;
 
 /**
  * This class contains custom formatting description.
@@ -32,12 +31,13 @@
 @SuppressWarnings("all")
 public class ActionDSLFormatter extends AbstractDeclarativeFormatter {
   @Inject
-  private XtypeGrammarAccess grammarAccess;
+  private OXtypeGrammarAccess grammarAccess;
   
+  @Override
   protected void configureFormatting(final FormattingConfig c) {
     final GenericFormatter genericFormatter = new GenericFormatter();
-    Grammar _grammar = this.grammar.getGrammar();
-    genericFormatter.formatFirstLevelBlocks(c, _grammar, "ActionToolbar", "ActionImport");
+    genericFormatter.formatFirstLevelBlocks(c, this.grammar.getGrammar(), "ActionCommand");
+    genericFormatter.formatFirstLevelBlocks(c, this.grammar.getGrammar(), "ActionToolbar");
     genericFormatter.genericFormatting(c, this.grammar, this.grammarAccess);
   }
 }
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/.gitignore b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/.gitignore
new file mode 100644
index 0000000..d445d08
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/.gitignore
@@ -0,0 +1,2 @@
+/ActionDSLJvmModelInferrer.java
+/ActionModelGenerator.java
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.java
index 0b5695a..acb10a4 100644
--- a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.java
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionDSLJvmModelInferrer.java
@@ -16,46 +16,52 @@
 
 import com.google.common.base.Objects;
 import java.util.Arrays;
-import java.util.concurrent.ExecutorService;
 import javax.inject.Inject;
+import org.eclipse.e4.core.contexts.Active;
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.core.di.annotations.CanExecute;
 import org.eclipse.e4.core.di.annotations.Execute;
-import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.workbench.IPresentationEngine;
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.Enumerator;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.osbp.persistence.IPersistenceService;
+import org.eclipse.osbp.core.api.persistence.IPersistenceService;
+import org.eclipse.osbp.datainterchange.api.IDataInterchange;
+import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
+import org.eclipse.osbp.ui.api.contextfunction.ICommandsProvider;
+import org.eclipse.osbp.ui.api.customfields.IBlobService;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
 import org.eclipse.osbp.ui.api.user.IUser;
-import org.eclipse.osbp.utils.constants.GeneratorConstants;
+import org.eclipse.osbp.utils.annotation.CommonUtils;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
 import org.eclipse.osbp.xtext.action.ActionButton;
 import org.eclipse.osbp.xtext.action.ActionChart;
+import org.eclipse.osbp.xtext.action.ActionCommand;
 import org.eclipse.osbp.xtext.action.ActionDatainterchange;
 import org.eclipse.osbp.xtext.action.ActionDialog;
-import org.eclipse.osbp.xtext.action.ActionGeneric;
+import org.eclipse.osbp.xtext.action.ActionFunction;
 import org.eclipse.osbp.xtext.action.ActionPackage;
 import org.eclipse.osbp.xtext.action.ActionReport;
 import org.eclipse.osbp.xtext.action.ActionSelectWorkload;
 import org.eclipse.osbp.xtext.action.ActionTask;
 import org.eclipse.osbp.xtext.action.ActionToolbar;
 import org.eclipse.osbp.xtext.action.ActionType;
+import org.eclipse.osbp.xtext.action.ActionUI;
 import org.eclipse.osbp.xtext.action.ActionWorkflow;
-import org.eclipse.osbp.xtext.action.ChartActionEnum;
-import org.eclipse.osbp.xtext.action.DatainterchangeActionEnum;
 import org.eclipse.osbp.xtext.action.DialogActionEnum;
-import org.eclipse.osbp.xtext.action.ReportActionEnum;
-import org.eclipse.osbp.xtext.action.SelectWorkloadActionEnum;
-import org.eclipse.osbp.xtext.action.TaskActionEnum;
-import org.eclipse.osbp.xtext.action.WorkflowActionEnum;
+import org.eclipse.osbp.xtext.action.UIActionEnum;
 import org.eclipse.osbp.xtext.action.common.IToolbarAction;
 import org.eclipse.osbp.xtext.datainterchange.DataInterchange;
 import org.eclipse.osbp.xtext.datainterchange.jvmmodel.DataDSLJvmModelInferrer;
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryFunction;
-import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryGroup;
 import org.eclipse.osbp.xtext.functionlibrarydsl.FunctionLibraryPackage;
-import org.eclipse.osbp.xtext.functionlibrarydsl.util.Library;
+import org.eclipse.osbp.xtext.messagedsl.MessagePackage;
 import org.eclipse.xtend2.lib.StringConcatenation;
 import org.eclipse.xtext.common.types.JvmAnnotationReference;
 import org.eclipse.xtext.common.types.JvmConstructor;
@@ -76,6 +82,7 @@
 import org.eclipse.xtext.xbase.lib.Extension;
 import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
 import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.osgi.service.component.annotations.Component;
 import org.slf4j.Logger;
 
 /**
@@ -98,42 +105,212 @@
   @Extension
   private DataDSLJvmModelInferrer data;
   
+  @Inject
+  @Extension
+  private CommonUtils _commonUtils;
+  
+  @Inject
+  private String contextClassName = "";
+  
+  private String clsName = "";
+  
   protected void _infer(final ActionPackage pkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
     EList<ActionToolbar> _toolbars = pkg.getToolbars();
     for (final ActionToolbar toolbar : _toolbars) {
       {
-        String _className = this.className(toolbar);
-        JvmGenericType toolbarClass = this._jvmTypesBuilder.toClass(toolbar, _className);
-        final Procedure1<JvmGenericType> _function = new Procedure1<JvmGenericType>() {
-          public void apply(final JvmGenericType it) {
-            ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
-            EList<JvmTypeReference> _superTypes = it.getSuperTypes();
-            JvmTypeReference _typeRef = ActionDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IToolbarAction.class);
-            ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
-            ActionDSLJvmModelInferrer.this.toToolbarConstructor(it, toolbar);
-            ActionDSLJvmModelInferrer.this.toToolbarFields(it, toolbar);
-            ActionDSLJvmModelInferrer.this.toToolbarOperations(it, toolbar);
-          }
+        JvmGenericType toolbarClass = this._jvmTypesBuilder.toClass(toolbar, this.className(toolbar));
+        final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
+          EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+          JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(IToolbarAction.class);
+          this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
+          this.toToolbarConstructor(it, toolbar);
+          this.toToolbarFields(it, toolbar);
+          this.toToolbarOperations(it, toolbar);
+          this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(pkg));
         };
         acceptor.<JvmGenericType>accept(toolbarClass, _function);
-        EList<ActionButton> _actions = toolbar.getActions();
-        for (final ActionButton action : _actions) {
-          {
-            String _className_1 = this.className(toolbar, action);
-            JvmGenericType handlerClass = this._jvmTypesBuilder.toClass(toolbar, _className_1);
-            final Procedure1<JvmGenericType> _function_1 = new Procedure1<JvmGenericType>() {
-              public void apply(final JvmGenericType it) {
-                ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
-                ActionDSLJvmModelInferrer.this.toHandlerFields(it, action);
-                ActionDSLJvmModelInferrer.this.toHandlerOperations(it, toolbar, action);
-                ActionDSLJvmModelInferrer.this.toHandlerConstructor(it, action);
-              }
-            };
-            acceptor.<JvmGenericType>accept(handlerClass, _function_1);
-          }
-        }
       }
     }
+    EList<ActionCommand> _commands = pkg.getCommands();
+    for (final ActionCommand command : _commands) {
+      {
+        JvmGenericType handlerClass = this._jvmTypesBuilder.toClass(command, this.className(command));
+        final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
+          this.toHandlerFields(it, command);
+          this.toHandlerOperations(it, command);
+          this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(pkg));
+        };
+        acceptor.<JvmGenericType>accept(handlerClass, _function);
+      }
+    }
+    this.clsName = pkg.getName().toString().concat(".").concat("CommandsProvider");
+    final JvmGenericType cls = this._jvmTypesBuilder.toClass(pkg, this.clsName);
+    cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(ICommandsProvider.class));
+    final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
+      JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Component.class);
+      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(ICommandsProvider.class);
+      this._commonUtils.addAnnAttr(annotationRef, pkg, "service", ((JvmTypeReference) _typeRef));
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
+      this.toCommandsConstructor(it, pkg);
+      this.toCommandsOperations(it, pkg);
+    };
+    acceptor.<JvmGenericType>accept(cls, _function);
+  }
+  
+  public void toCommandsOperations(final JvmGenericType type, final ActionPackage pkg) {
+    EList<JvmMember> _members = type.getMembers();
+    final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(pkg, "application", this._typeReferenceBuilder.typeRef(MApplication.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _init = this.init(pkg);
+        _builder.append(_init);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(pkg, "init", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+  }
+  
+  public String init(final ActionPackage pkg) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("if(!application.getBindingTables().isEmpty()) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("MBindingTable bindingTable = application.getBindingTables().get(0);");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("MKeyBinding keyBinding;");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("MCommand command;");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("MHandler commandHandler;");
+    _builder.newLine();
+    String body = _builder.toString();
+    EList<ActionCommand> _commands = pkg.getCommands();
+    for (final ActionCommand command : _commands) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append(body);
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("command = CommandsFactoryImpl.eINSTANCE.createCommand();");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("command.setElementId(\"");
+      QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(pkg);
+      _builder_1.append(_fullyQualifiedName, "\t");
+      _builder_1.append(".");
+      String _name = command.getName();
+      _builder_1.append(_name, "\t");
+      _builder_1.append("\");");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("command.setCommandName(\"");
+      String _name_1 = command.getName();
+      _builder_1.append(_name_1, "\t");
+      _builder_1.append("\");");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      {
+        boolean _isHasDescription = command.isHasDescription();
+        if (_isHasDescription) {
+          _builder_1.append("command.setDescription(\"");
+          String _description = command.getDescription();
+          _builder_1.append(_description, "\t");
+          _builder_1.append("\");");
+        }
+      }
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("application.getCommands().add(command);");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("commandHandler = CommandsFactoryImpl.eINSTANCE.createHandler();");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("commandHandler.setElementId(\"");
+      QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(pkg);
+      _builder_1.append(_fullyQualifiedName_1, "\t");
+      _builder_1.append(".");
+      String _name_2 = command.getName();
+      _builder_1.append(_name_2, "\t");
+      _builder_1.append("Handler\");");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("commandHandler.setCommand(command);");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("commandHandler.setContributionURI(\"bundleclass://\"+FrameworkUtil.getBundle(");
+      String _className = this.className(command);
+      _builder_1.append(_className, "\t");
+      _builder_1.append(".class).getSymbolicName()+\"/");
+      String _className_1 = this.className(command);
+      _builder_1.append(_className_1, "\t");
+      _builder_1.append("\");");
+      _builder_1.newLineIfNotEmpty();
+      _builder_1.append("\t");
+      _builder_1.append("application.getHandlers().add(commandHandler);");
+      _builder_1.newLine();
+      {
+        boolean _isHasKeyBinding = command.isHasKeyBinding();
+        if (_isHasKeyBinding) {
+          _builder_1.append("\t");
+          _builder_1.append("keyBinding = CommandsFactoryImpl.eINSTANCE.createKeyBinding();");
+          _builder_1.newLine();
+          _builder_1.append("\t");
+          _builder_1.append("keyBinding.setElementId(\"");
+          QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(pkg);
+          _builder_1.append(_fullyQualifiedName_2, "\t");
+          _builder_1.append(".");
+          String _name_3 = command.getName();
+          _builder_1.append(_name_3, "\t");
+          _builder_1.append("Keybinding\");");
+          _builder_1.newLineIfNotEmpty();
+          _builder_1.append("\t");
+          _builder_1.append("keyBinding.setKeySequence(\"");
+          String _replace = command.getKeyBinding().replace(" ", "+");
+          _builder_1.append(_replace, "\t");
+          _builder_1.append("\");");
+          _builder_1.newLineIfNotEmpty();
+          _builder_1.append("\t");
+          _builder_1.append("keyBinding.setCommand(command);");
+          _builder_1.newLine();
+          _builder_1.append("\t");
+          _builder_1.append("bindingTable.getBindings().add(keyBinding);");
+        }
+      }
+      _builder_1.newLineIfNotEmpty();
+      body = _builder_1.toString();
+    }
+    StringConcatenation _builder_2 = new StringConcatenation();
+    _builder_2.append(body);
+    _builder_2.newLineIfNotEmpty();
+    _builder_2.append("}");
+    _builder_2.newLine();
+    body = _builder_2.toString();
+    return body;
+  }
+  
+  public void toCommandsConstructor(final JvmGenericType type, final ActionPackage pkg) {
+    EList<JvmMember> _members = type.getMembers();
+    final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
+    };
+    JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(pkg, _function);
+    this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
   }
   
   /**
@@ -141,193 +318,125 @@
    */
   public void toToolbarConstructor(final JvmGenericType type, final ActionToolbar toolbar) {
     EList<JvmMember> _members = type.getMembers();
-    final Procedure1<JvmConstructor> _function = new Procedure1<JvmConstructor>() {
-      public void apply(final JvmConstructor it) {
-        EList<JvmFormalParameter> _parameters = it.getParameters();
-        JvmTypeReference _typeRef = ActionDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(String.class);
-        JvmFormalParameter _parameter = ActionDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(toolbar, "uuid", _typeRef);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("super();");
-            _builder.newLine();
-            _builder.append("this.uuid = uuid;");
-            it.append(_builder);
-          }
-        };
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(toolbar, "uuid", this._typeReferenceBuilder.typeRef(String.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("super();");
+        _builder.newLine();
+        _builder.append("this.uuid = uuid;");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
     };
     JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(toolbar, _function);
     this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
   }
   
   public String className(final ActionToolbar toolbar) {
-    return this.className(toolbar, null);
-  }
-  
-  public String className(final ActionToolbar toolbar, final ActionButton action) {
-    String actionId = "";
     EObject _eContainer = toolbar.eContainer();
     ActionPackage pkg = ((ActionPackage) _eContainer);
-    boolean _notEquals = (!Objects.equal(action, null));
-    if (_notEquals) {
-      ActionType _actionType = action.getActionType();
-      boolean _matched = false;
-      if (!_matched) {
-        if (_actionType instanceof ActionTask) {
-          _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          TaskActionEnum _action = ((ActionTask) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          actionId = _literal;
-        }
-      }
-      if (!_matched) {
-        if (_actionType instanceof ActionSelectWorkload) {
-          _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          SelectWorkloadActionEnum _action = ((ActionSelectWorkload) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          actionId = _literal;
-        }
-      }
-      if (!_matched) {
-        if (_actionType instanceof ActionDialog) {
-          _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          DialogActionEnum _action = ((ActionDialog) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          actionId = _literal;
-        }
-      }
-      if (!_matched) {
-        if (_actionType instanceof ActionReport) {
-          _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          ReportActionEnum _action = ((ActionReport) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          actionId = _literal;
-        }
-      }
-      if (!_matched) {
-        if (_actionType instanceof ActionChart) {
-          _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          ChartActionEnum _action = ((ActionChart) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          actionId = _literal;
-        }
-      }
-      if (!_matched) {
-        if (_actionType instanceof ActionWorkflow) {
-          _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          WorkflowActionEnum _action = ((ActionWorkflow) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          actionId = _literal;
-        }
-      }
-      if (!_matched) {
-        if (_actionType instanceof ActionDatainterchange) {
-          _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          DatainterchangeActionEnum _action = ((ActionDatainterchange) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          actionId = _literal;
-        }
-      }
-      if (!_matched) {
-        if (_actionType instanceof ActionGeneric) {
-          _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          String _action = ((ActionGeneric) _actionType_1).getAction();
-          actionId = _action;
-        }
-      }
-    }
-    String _name = pkg.getName();
-    String _string = _name.toString();
-    String _concat = _string.concat(".");
-    String _name_1 = toolbar.getName();
-    String _firstUpper = StringExtensions.toFirstUpper(_name_1);
-    String _concat_1 = _concat.concat(_firstUpper);
-    String _firstUpper_1 = StringExtensions.toFirstUpper(actionId);
-    String _concat_2 = _concat_1.concat(_firstUpper_1);
-    return _concat_2.concat("Action");
+    return pkg.getName().toString().concat(".").concat(StringExtensions.toFirstUpper(toolbar.getName())).concat("Toolbar");
+  }
+  
+  public String className(final ActionCommand actionCommand) {
+    EObject _eContainer = actionCommand.eContainer();
+    ActionPackage pkg = ((ActionPackage) _eContainer);
+    return pkg.getName().toString().concat(".").concat(StringExtensions.toFirstUpper(actionCommand.getName())).concat("Action");
   }
   
   public void toToolbarOperations(final JvmGenericType type, final ActionToolbar toolbar) {
     EList<JvmMember> _members = type.getMembers();
-    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Void.TYPE);
-    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        EList<JvmFormalParameter> _parameters = it.getParameters();
-        JvmTypeReference _typeRef = ActionDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IEclipseContext.class);
-        JvmFormalParameter _parameter = ActionDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(toolbar, "eclipseContext", _typeRef);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
-        JvmTypeReference _typeRef_1 = ActionDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IPresentationEngine.class);
-        JvmFormalParameter _parameter_1 = ActionDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(toolbar, "renderingEngine", _typeRef_1);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
-        EList<JvmFormalParameter> _parameters_2 = it.getParameters();
-        JvmTypeReference _typeRef_2 = ActionDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IThemeResourceService.class);
-        JvmFormalParameter _parameter_2 = ActionDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(toolbar, "themeResourceService", _typeRef_2);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
-        it.setVisibility(JvmVisibility.PUBLIC);
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ActionDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            String _createToolbar = ActionDSLJvmModelInferrer.this.createToolbar(toolbar);
-            _builder.append(_createToolbar, "");
-            it.append(_builder);
-          }
-        };
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(toolbar, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+      JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(toolbar, "renderingEngine", this._typeReferenceBuilder.typeRef(IPresentationEngine.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+      EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+      JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(toolbar, "themeResourceService", this._typeReferenceBuilder.typeRef(IThemeResourceService.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+      it.setVisibility(JvmVisibility.PUBLIC);
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _createToolbar = this.createToolbar(toolbar);
+        _builder.append(_createToolbar);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
     };
-    JvmOperation _method = this._jvmTypesBuilder.toMethod(toolbar, "createToolbar", _typeRef, _function);
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(toolbar, "createToolbar", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
     EList<JvmMember> _members_1 = type.getMembers();
-    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(MToolBar.class);
-    final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ActionDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("return toolbar;");
-            it.append(_builder);
-          }
-        };
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("return toolbar;");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_2);
     };
-    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(toolbar, "getToolBar", _typeRef_1, _function_1);
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(toolbar, "getToolBar", this._typeReferenceBuilder.typeRef(MToolBar.class), _function_1);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
+    EList<JvmMember> _members_2 = type.getMembers();
+    final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(toolbar, "commandName", this._typeReferenceBuilder.typeRef(String.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+      JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(toolbar, "toolItem", this._typeReferenceBuilder.typeRef(MHandledToolItem.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+      EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+      JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(toolbar, "application", this._typeReferenceBuilder.typeRef(MApplication.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+      it.setVisibility(JvmVisibility.PRIVATE);
+      final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("for(MCommand command:application.getCommands()) {");
+        _builder.newLine();
+        _builder.append("\t");
+        _builder.append("if(command.getCommandName().equals(commandName)) {");
+        _builder.newLine();
+        _builder.append("\t\t");
+        _builder.append("toolItem.setCommand(command);");
+        _builder.newLine();
+        _builder.append("\t\t");
+        _builder.append("break;");
+        _builder.newLine();
+        _builder.append("\t");
+        _builder.append("}");
+        _builder.newLine();
+        _builder.append("}");
+        _builder.newLine();
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_3);
+    };
+    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(toolbar, "setCommand", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
   }
   
   public String createToolbar(final ActionToolbar toolbar) {
     String body = "";
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append(body, "");
+    _builder.append(body);
     _builder.newLineIfNotEmpty();
-    _builder.append("this.eclipseContext = eclipseContext;");
-    _builder.newLine();
-    _builder.append("this.themeResourceService = themeResourceService;");
-    _builder.newLine();
-    _builder.newLine();
     _builder.append("MenuFactoryImpl factory = MenuFactoryImpl.eINSTANCE;");
     _builder.newLine();
-    _builder.append("MDirectToolItem toolItem = null;");
+    _builder.append("MHandledToolItem toolItem = null;");
     _builder.newLine();
     _builder.newLine();
+    _builder.append("MApplication application = (MApplication)eclipseContext.get(MApplication.class);");
+    _builder.newLine();
     _builder.append("MPart part = (MPart)eclipseContext.get(MPart.class);");
     _builder.newLine();
     _builder.append("if(part != null) {");
@@ -345,10 +454,9 @@
     _builder.append("toolbar.setElementId(uuid);");
     _builder.newLine();
     _builder.append("\t\t");
-    _builder.append("eclipseContext.set(\"");
-    String _name = toolbar.getName();
-    _builder.append(_name, "\t\t");
-    _builder.append("_TOOLBAR_ID\", toolbar.getElementId());");
+    _builder.append("part.getContext().set(\"");
+    _builder.append(IToolbarAction.TOOLBAR_UUID, "\t\t");
+    _builder.append("\", toolbar.getElementId());");
     _builder.newLineIfNotEmpty();
     _builder.append("\t\t");
     _builder.append("toolbar.setToBeRendered(true);");
@@ -421,34 +529,51 @@
     EList<ActionButton> _actions = toolbar.getActions();
     for (final ActionButton action : _actions) {
       StringConcatenation _builder_1 = new StringConcatenation();
-      _builder_1.append(body, "");
-      String _createToolItem = this.createToolItem(toolbar, action);
-      _builder_1.append(_createToolItem, "");
+      _builder_1.append(body);
+      CharSequence _createToolItem = this.createToolItem(toolbar, action);
+      _builder_1.append(_createToolItem);
       body = _builder_1.toString();
     }
     StringConcatenation _builder_2 = new StringConcatenation();
-    _builder_2.append(body, "");
+    _builder_2.append(body);
     _builder_2.newLineIfNotEmpty();
     _builder_2.append("}");
     body = _builder_2.toString();
     return body;
   }
   
-  public String createToolItem(final ActionToolbar toolbar, final ActionButton action) {
-    String body = "";
+  public CharSequence createToolItem(final ActionToolbar toolbar, final ActionButton action) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append(body, "");
-    _builder.newLineIfNotEmpty();
+    _builder.newLine();
     _builder.append("\t");
-    _builder.append("toolItem = factory.createDirectToolItem();");
+    _builder.append("toolItem = factory.createHandledToolItem();");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("toolItem.setElementId(UUID.randomUUID().toString());");
     _builder.newLine();
     _builder.append("\t");
     _builder.append("toolItem.setType(ItemType.PUSH);");
     _builder.newLine();
     _builder.append("\t");
     _builder.append("toolItem.setTooltip(\"");
-    String _name = action.getName();
-    _builder.append(_name, "\t");
+    {
+      if (((action.getCommand().getActionType() instanceof ActionDatainterchange) && ((ActionDatainterchange) action.getCommand().getActionType()).getDataRef().isDescription())) {
+        ActionType _actionType = action.getCommand().getActionType();
+        String _descriptionValue = ((ActionDatainterchange) _actionType).getDataRef().getDescriptionValue();
+        _builder.append(_descriptionValue, "\t");
+      } else {
+        String _name = action.getName();
+        _builder.append(_name, "\t");
+      }
+    }
+    {
+      boolean _isHasKeyBinding = action.getCommand().isHasKeyBinding();
+      if (_isHasKeyBinding) {
+        _builder.append(".keybinding.");
+        String _keyBinding = action.getCommand().getKeyBinding();
+        _builder.append(_keyBinding, "\t");
+      }
+    }
     _builder.append("\");");
     _builder.newLineIfNotEmpty();
     _builder.append("\t");
@@ -467,180 +592,145 @@
     _builder.append("toolItem.setVisible(true);");
     _builder.newLine();
     _builder.append("\t");
-    _builder.append("toolItem.setContributionURI(\"bundleclass://\"+FrameworkUtil.getBundle(");
-    String _className = this.className(toolbar, action);
-    _builder.append(_className, "\t");
-    _builder.append(".class).getSymbolicName()+\"/");
-    String _className_1 = this.className(toolbar, action);
-    _builder.append(_className_1, "\t");
-    _builder.append("\");");
+    _builder.append("setCommand(\"");
+    String _name_1 = action.getCommand().getName();
+    _builder.append(_name_1, "\t");
+    _builder.append("\", toolItem, application);");
     _builder.newLineIfNotEmpty();
     _builder.append("\t");
     _builder.append("toolbar.getChildren().add(toolItem);");
     _builder.newLine();
     {
-      ActionType _actionType = action.getActionType();
-      if ((_actionType instanceof ActionReport)) {
+      ActionType _actionType_1 = action.getCommand().getActionType();
+      if ((_actionType_1 instanceof ActionReport)) {
         _builder.append("\t");
         _builder.append("toolItem.getTags().add(\"");
-        ActionType _actionType_1 = action.getActionType();
-        ReportActionEnum _action = ((ActionReport) _actionType_1).getAction();
-        String _literal = _action.getLiteral();
+        ActionType _actionType_2 = action.getCommand().getActionType();
+        String _literal = ((ActionReport) _actionType_2).getAction().getLiteral();
         _builder.append(_literal, "\t");
         _builder.append("\");");
         _builder.newLineIfNotEmpty();
       }
     }
-    body = _builder.toString();
-    return body;
+    return _builder;
   }
   
   public void toToolbarFields(final JvmGenericType type, final ActionToolbar toolbar) {
     JvmField field = null;
-    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Logger.class);
-    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("org.slf4j.LoggerFactory.getLogger(\"toolbar\")");
-            it.append(_builder);
-          }
-        };
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
-      }
+    final Procedure1<JvmField> _function = (JvmField it) -> {
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("org.slf4j.LoggerFactory.getLogger(\"toolbar\")");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setInitializer(it, _function_1);
     };
-    JvmField _field = this._jvmTypesBuilder.toField(toolbar, "log", _typeRef, _function);
-    field = _field;
+    field = this._jvmTypesBuilder.toField(toolbar, "log", this._typeReferenceBuilder.typeRef(Logger.class), _function);
     field.setStatic(true);
     field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
-    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(String.class);
-    JvmField _field_1 = this._jvmTypesBuilder.toField(toolbar, "uuid", _typeRef_1);
-    field = _field_1;
+    field = this._jvmTypesBuilder.toField(toolbar, "uuid", this._typeReferenceBuilder.typeRef(String.class));
     field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members_1 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
-    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(IEclipseContext.class);
-    JvmField _field_2 = this._jvmTypesBuilder.toField(toolbar, "eclipseContext", _typeRef_2);
-    field = _field_2;
+    field = this._jvmTypesBuilder.toField(toolbar, "toolbar", this._typeReferenceBuilder.typeRef(MToolBar.class));
     EList<JvmMember> _members_2 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
-    JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(IThemeResourceService.class);
-    JvmField _field_3 = this._jvmTypesBuilder.toField(toolbar, "themeResourceService", _typeRef_3);
-    field = _field_3;
-    EList<JvmMember> _members_3 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
-    JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(MToolBar.class);
-    JvmField _field_4 = this._jvmTypesBuilder.toField(toolbar, "toolbar", _typeRef_4);
-    field = _field_4;
-    EList<JvmMember> _members_4 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
   }
   
-  public void toHandlerFields(final JvmGenericType type, final ActionButton action) {
+  public void toHandlerFields(final JvmGenericType type, final ActionCommand action) {
     JvmField field = null;
-    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Logger.class);
-    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("org.slf4j.LoggerFactory.getLogger(\"action\")");
-            it.append(_builder);
-          }
-        };
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
-      }
+    final Procedure1<JvmField> _function = (JvmField it) -> {
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("org.slf4j.LoggerFactory.getLogger(\"action\")");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setInitializer(it, _function_1);
     };
-    JvmField _field = this._jvmTypesBuilder.toField(action, "log", _typeRef, _function);
-    field = _field;
+    field = this._jvmTypesBuilder.toField(action, "log", this._typeReferenceBuilder.typeRef(Logger.class), _function);
     field.setStatic(true);
     field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
-    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(IEventBroker.class);
-    final Procedure1<JvmField> _function_1 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ActionDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      }
-    };
-    JvmField _field_1 = this._jvmTypesBuilder.toField(action, "eventBroker", _typeRef_1, _function_1);
-    field = _field_1;
     EList<JvmMember> _members_1 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
-    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(IUser.class);
-    final Procedure1<JvmField> _function_2 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ActionDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      }
-    };
-    JvmField _field_2 = this._jvmTypesBuilder.toField(action, "user", _typeRef_2, _function_2);
-    field = _field_2;
+    JvmField _field = this._jvmTypesBuilder.toField(action, "activePart", this._typeReferenceBuilder.typeRef(MUIElement.class));
+    this._jvmTypesBuilder.<JvmField>operator_add(_members_1, _field);
     EList<JvmMember> _members_2 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
-    JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(IEclipseContext.class);
-    final Procedure1<JvmField> _function_3 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ActionDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      }
+    final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
+      final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("return activePart;");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_2);
     };
-    JvmField _field_3 = this._jvmTypesBuilder.toField(action, "eclipseContext", _typeRef_3, _function_3);
-    field = _field_3;
-    EList<JvmMember> _members_3 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
-    JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(IPersistenceService.class);
-    final Procedure1<JvmField> _function_4 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ActionDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      }
-    };
-    JvmField _field_4 = this._jvmTypesBuilder.toField(action, "persistenceService", _typeRef_4, _function_4);
-    field = _field_4;
-    EList<JvmMember> _members_4 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
-    JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(ExecutorService.class);
-    JvmField _field_5 = this._jvmTypesBuilder.toField(action, "executorService", _typeRef_5);
-    field = _field_5;
-    field.setStatic(true);
-    EList<JvmMember> _members_5 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(action, "getActivePart", this._typeReferenceBuilder.typeRef(MUIElement.class), _function_1);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method);
   }
   
-  /**
-   * <p>build the constructors to be used by an e4 application.</p>
-   */
-  public void toHandlerConstructor(final JvmDeclaredType type, final ActionButton action) {
-    EList<JvmMember> _members = type.getMembers();
-    final Procedure1<JvmConstructor> _function = new Procedure1<JvmConstructor>() {
-      public void apply(final JvmConstructor it) {
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            CharSequence _handlerConstructor = ActionDSLJvmModelInferrer.this.handlerConstructor(action);
-            _builder.append(_handlerConstructor, "");
-            it.append(_builder);
-          }
-        };
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
-    };
-    JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(action, _function);
-    this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
-  }
-  
-  public CharSequence handlerConstructor(final ActionButton action) {
+  public CharSequence activatePart() {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("executorService = Executors.newFixedThreadPool(10);");
+    _builder.append("if (part == null) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("return;");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("if(activePart != null && activePart.getWidget() instanceof Panel) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("((Panel)activePart.getWidget()).removeStyleName(EnumCssClass.HAS_FOCUS.styleName());");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("if(part.getWidget() instanceof Panel) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("activePart = part;");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("((Panel)activePart.getWidget()).addStyleName(EnumCssClass.HAS_FOCUS.styleName());");
+    _builder.newLine();
+    _builder.append("\t   ");
+    _builder.append("IE4Dialog dialog = part.getContext().get(IE4Dialog.class);");
+    _builder.newLine();
+    _builder.append("\t   ");
+    _builder.append("if (dialog != null) {");
+    _builder.newLine();
+    _builder.append("\t       ");
+    _builder.append("ContextInjectionFactory.invoke(dialog, Focus.class, part.getContext());");
+    _builder.newLine();
+    _builder.append("\t   ");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t   ");
+    _builder.append("IE4Table table = part.getContext().get(IE4Table.class);");
+    _builder.newLine();
+    _builder.append("\t   ");
+    _builder.append("if (table != null) {");
+    _builder.newLine();
+    _builder.append("\t       ");
+    _builder.append("ContextInjectionFactory.invoke(table, Focus.class, part.getContext());");
+    _builder.newLine();
+    _builder.append("\t   ");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t   ");
+    _builder.append("IE4Focusable focusable = part.getContext().get(IE4Focusable.class);");
+    _builder.newLine();
+    _builder.append("\t   ");
+    _builder.append("if (focusable != null) {");
+    _builder.newLine();
+    _builder.append("\t       ");
+    _builder.append("ContextInjectionFactory.invoke(focusable, Focus.class, part.getContext());");
+    _builder.newLine();
+    _builder.append("\t   ");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("}");
     _builder.newLine();
     return _builder;
   }
@@ -648,353 +738,637 @@
   /**
    * <p>build the methods to be used as toolbar handlers by an e4 application.</p>
    */
-  public void toHandlerOperations(final JvmDeclaredType type, final ActionToolbar toolbar, final ActionButton action) {
-    EList<JvmMember> _members = type.getMembers();
-    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Library.Context.class);
-    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        it.setVisibility(JvmVisibility.PRIVATE);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            CharSequence _content = ActionDSLJvmModelInferrer.this.getContent(action);
-            _builder.append(_content, "");
-            it.append(_builder);
-          }
-        };
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
-    };
-    JvmOperation _method = this._jvmTypesBuilder.toMethod(action, "getContent", _typeRef, _function);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
-    EList<JvmMember> _members_1 = type.getMembers();
-    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(boolean.class);
-    final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
+  public void toHandlerOperations(final JvmDeclaredType type, final ActionCommand action) {
+    if (((action.getActionType() instanceof ActionUI) && (Objects.equal(((ActionUI) action.getActionType()).getAction(), UIActionEnum.NEXT_PART) || Objects.equal(((ActionUI) action.getActionType()).getAction(), UIActionEnum.PREVIOUS_PART)))) {
+      EList<JvmMember> _members = type.getMembers();
+      final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
         EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ActionDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(CanExecute.class);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            CharSequence _canExecute = ActionDSLJvmModelInferrer.this.canExecute(action);
-            _builder.append(_canExecute, "");
-            it.append(_builder);
-          }
-        };
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
-    };
-    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(action, "canExecute", _typeRef_1, _function_1);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
-    EList<JvmMember> _members_2 = type.getMembers();
-    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(Void.TYPE);
-    final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ActionDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Execute.class);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Inject.class);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        JvmFormalParameter para = this._jvmTypesBuilder.toParameter(action, "part", this._typeReferenceBuilder.typeRef(MPart.class));
+        EList<JvmAnnotationReference> _annotations_1 = para.getAnnotations();
+        JvmAnnotationReference _annotationRef_1 = this._annotationTypesBuilder.annotationRef(Active.class);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_1, _annotationRef_1);
+        EList<JvmAnnotationReference> _annotations_2 = para.getAnnotations();
+        JvmAnnotationReference _annotationRef_2 = this._annotationTypesBuilder.annotationRef(Optional.class);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_2, _annotationRef_2);
         EList<JvmFormalParameter> _parameters = it.getParameters();
-        JvmTypeReference _typeRef = ActionDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IEventBroker.class);
-        JvmFormalParameter _parameter = ActionDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(action, "eventBroker", _typeRef);
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            CharSequence _execute = ActionDSLJvmModelInferrer.this.execute(action, toolbar);
-            _builder.append(_execute, "");
-            it.append(_builder);
-          }
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, para);
+        final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          CharSequence _activatePart = this.activatePart();
+          _builder.append(_activatePart);
+          it_1.append(_builder);
         };
-        ActionDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
-    };
-    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(action, "execute", _typeRef_2, _function_2);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
-  }
-  
-  public CharSequence execute(final ActionButton action, final ActionToolbar toolbar) {
-    CharSequence _xblockexpression = null;
-    {
-      String packageFQN = "";
-      FunctionLibraryGroup _group = action.getGroup();
-      boolean _notEquals = (!Objects.equal(_group, null));
-      if (_notEquals) {
-        FunctionLibraryGroup _group_1 = action.getGroup();
-        EObject _eContainer = _group_1.eContainer();
-        FunctionLibraryPackage pkg = ((FunctionLibraryPackage) _eContainer);
-        QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(pkg);
-        String _string = _fullyQualifiedName.toString();
-        packageFQN = _string;
-      }
-      CharSequence _switchResult = null;
+        this._jvmTypesBuilder.setBody(it, _function_1);
+      };
+      JvmOperation _method = this._jvmTypesBuilder.toMethod(action, "activePart", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+    }
+    EList<JvmMember> _members_1 = type.getMembers();
+    final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(CanExecute.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
       ActionType _actionType = action.getActionType();
       boolean _matched = false;
-      if (!_matched) {
-        if (_actionType instanceof ActionTask) {
-          _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          TaskActionEnum _action = ((ActionTask) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          _switchResult = this.doBroadcast(_literal, action, toolbar, packageFQN);
-        }
+      if (_actionType instanceof ActionTask) {
+        _matched=true;
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       }
       if (!_matched) {
         if (_actionType instanceof ActionSelectWorkload) {
           _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          SelectWorkloadActionEnum _action = ((ActionSelectWorkload) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          _switchResult = this.doBroadcast(_literal, action, toolbar, packageFQN);
         }
       }
       if (!_matched) {
         if (_actionType instanceof ActionDialog) {
           _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          DialogActionEnum _action = ((ActionDialog) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          _switchResult = this.doBroadcast(_literal, action, toolbar, packageFQN);
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
         }
       }
       if (!_matched) {
         if (_actionType instanceof ActionReport) {
           _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          ReportActionEnum _action = ((ActionReport) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          _switchResult = this.doBroadcast(_literal, action, toolbar, packageFQN);
         }
       }
       if (!_matched) {
         if (_actionType instanceof ActionChart) {
           _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          ChartActionEnum _action = ((ActionChart) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          _switchResult = this.doBroadcast(_literal, action, toolbar, packageFQN);
         }
       }
       if (!_matched) {
         if (_actionType instanceof ActionWorkflow) {
           _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          WorkflowActionEnum _action = ((ActionWorkflow) _actionType_1).getAction();
-          String _literal = _action.getLiteral();
-          _switchResult = this.doBroadcast(_literal, action, toolbar, packageFQN);
         }
       }
       if (!_matched) {
         if (_actionType instanceof ActionDatainterchange) {
           _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          DataInterchange _dataRef = ((ActionDatainterchange) _actionType_1).getDataRef();
-          CharSequence _doInterchange = null;
-          if (_dataRef!=null) {
-            _doInterchange=this.doInterchange(_dataRef, action);
-          }
-          _switchResult = _doInterchange;
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
         }
       }
       if (!_matched) {
-        if (_actionType instanceof ActionGeneric) {
+        if (_actionType instanceof ActionFunction) {
           _matched=true;
-          ActionType _actionType_1 = action.getActionType();
-          String _action = ((ActionGeneric) _actionType_1).getAction();
-          _switchResult = this.doBroadcast(_action, action, toolbar, packageFQN);
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
         }
       }
-      _xblockexpression = _switchResult;
-    }
-    return _xblockexpression;
+      if (!_matched) {
+        if (_actionType instanceof ActionUI) {
+          _matched=true;
+        }
+      }
+      final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _canExecute = this.canExecute(action);
+        _builder.append(_canExecute);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_2);
+    };
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(action, "canExecute", this._typeReferenceBuilder.typeRef(boolean.class), _function_1);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
+    EList<JvmMember> _members_2 = type.getMembers();
+    final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Execute.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      ActionType _actionType = action.getActionType();
+      boolean _matched = false;
+      if (_actionType instanceof ActionTask) {
+        _matched=true;
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+        JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(action, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+      }
+      if (!_matched) {
+        if (_actionType instanceof ActionSelectWorkload) {
+          _matched=true;
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(action, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+        }
+      }
+      if (!_matched) {
+        if (_actionType instanceof ActionDialog) {
+          _matched=true;
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(action, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+        }
+      }
+      if (!_matched) {
+        if (_actionType instanceof ActionReport) {
+          _matched=true;
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(action, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+        }
+      }
+      if (!_matched) {
+        if (_actionType instanceof ActionChart) {
+          _matched=true;
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(action, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+        }
+      }
+      if (!_matched) {
+        if (_actionType instanceof ActionWorkflow) {
+          _matched=true;
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(action, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+        }
+      }
+      if (!_matched) {
+        if (_actionType instanceof ActionDatainterchange) {
+          _matched=true;
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+          JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(action, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+          EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+          JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(action, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+          EList<JvmFormalParameter> _parameters_3 = it.getParameters();
+          JvmFormalParameter _parameter_3 = this._jvmTypesBuilder.toParameter(action, "executorService", this._typeReferenceBuilder.typeRef(VaadinExecutorService.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
+          EList<JvmFormalParameter> _parameters_4 = it.getParameters();
+          JvmFormalParameter _parameter_4 = this._jvmTypesBuilder.toParameter(action, "dslMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_4, _parameter_4);
+          EList<JvmFormalParameter> _parameters_5 = it.getParameters();
+          JvmFormalParameter _parameter_5 = this._jvmTypesBuilder.toParameter(action, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_5, _parameter_5);
+          EList<JvmFormalParameter> _parameters_6 = it.getParameters();
+          JvmFormalParameter _parameter_6 = this._jvmTypesBuilder.toParameter(action, "user", this._typeReferenceBuilder.typeRef(IUser.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_6, _parameter_6);
+        }
+      }
+      if (!_matched) {
+        if (_actionType instanceof ActionFunction) {
+          _matched=true;
+          EList<JvmFormalParameter> _parameters = it.getParameters();
+          JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(action, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+          this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+          ActionType _actionType_1 = action.getActionType();
+          boolean _isHasExecuteLater = ((ActionFunction) _actionType_1).isHasExecuteLater();
+          if (_isHasExecuteLater) {
+            EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+            JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(action, "executorService", this._typeReferenceBuilder.typeRef(VaadinExecutorService.class));
+            this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+          }
+          if ((((ActionFunction) action.getActionType()).isHasMessage() || ((ActionFunction) action.getActionType()).isHasStartedMessage())) {
+            EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+            JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(action, "dslMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class));
+            this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+            EList<JvmFormalParameter> _parameters_3 = it.getParameters();
+            JvmFormalParameter _parameter_3 = this._jvmTypesBuilder.toParameter(action, "user", this._typeReferenceBuilder.typeRef(IUser.class));
+            this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_3, _parameter_3);
+          }
+        }
+      }
+      if (!_matched) {
+        if (_actionType instanceof ActionUI) {
+          _matched=true;
+        }
+      }
+      final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        CharSequence _execute = this.execute(action);
+        _builder.append(_execute);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_3);
+    };
+    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(action, "execute", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
   }
   
-  public CharSequence doInterchange(final DataInterchange dataInterchange, final ActionButton action) {
+  public CharSequence execute(final ActionCommand command) {
+    CharSequence _switchResult = null;
+    ActionType _actionType = command.getActionType();
+    boolean _matched = false;
+    if (_actionType instanceof ActionDatainterchange) {
+      _matched=true;
+      ActionType _actionType_1 = command.getActionType();
+      DataInterchange _dataRef = ((ActionDatainterchange) _actionType_1).getDataRef();
+      CharSequence _doInterchange = null;
+      if (((DataInterchange) _dataRef)!=null) {
+        ActionType _actionType_2 = command.getActionType();
+        DataInterchange _dataRef_1 = ((ActionDatainterchange) _actionType_1).getDataRef();
+        _doInterchange=this.doInterchange(((DataInterchange) _dataRef_1), command);
+      }
+      _switchResult = _doInterchange;
+    }
+    if (!_matched) {
+      _switchResult = this.doExecute(command);
+    }
+    return _switchResult;
+  }
+  
+  public CharSequence doInterchange(final DataInterchange dataInterchange, final ActionCommand action) {
     StringConcatenation _builder = new StringConcatenation();
-    String _fileURL = this.data.getFileURL(dataInterchange);
-    String _basicRunConfiguration = this.data.getBasicRunConfiguration(dataInterchange, true, _fileURL);
-    _builder.append(_basicRunConfiguration, "");
+    ActionType _actionType = action.getActionType();
+    String _basicRunConfiguration = this.data.getBasicRunConfiguration(dataInterchange, true, this.data.getFileURL(dataInterchange), ((ActionDatainterchange) _actionType).getAction().getLiteral());
+    _builder.append(_basicRunConfiguration);
     _builder.newLineIfNotEmpty();
     String _defaultVariableName = this.data.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName, "");
+    _builder.append(_defaultVariableName);
     _builder.append(".setDirection(WorkerThreadRunnable.Direction.");
-    ActionType _actionType = action.getActionType();
-    DatainterchangeActionEnum _action = ((ActionDatainterchange) _actionType).getAction();
-    String _literal = _action.getLiteral();
-    String _upperCase = _literal.toUpperCase();
-    _builder.append(_upperCase, "");
+    ActionType _actionType_1 = action.getActionType();
+    String _upperCase = ((ActionDatainterchange) _actionType_1).getAction().getLiteral().toUpperCase();
+    _builder.append(_upperCase);
     _builder.append(");");
     _builder.newLineIfNotEmpty();
     String _defaultVariableName_1 = this.data.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_1, "");
-    _builder.append(".setEventBroker(eventBroker);");
+    _builder.append(_defaultVariableName_1);
+    _builder.append(".setEventDispatcher(eventDispatcher);");
     _builder.newLineIfNotEmpty();
-    _builder.append("executorService.execute(");
     String _defaultVariableName_2 = this.data.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_2, "");
-    _builder.append(");");
+    _builder.append(_defaultVariableName_2);
+    _builder.append(".setBlobService(blobService);");
+    _builder.newLineIfNotEmpty();
+    _builder.append("Notification.show(dslMetadataService.translate(user.getLocale().toLanguageTag(), \"datainterchangeStarted\"),Notification.Type.HUMANIZED_MESSAGE);");
+    _builder.newLine();
+    _builder.append("executorService.invokeLater(null, new Runnable() {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("@Override");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("public void run() {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    String _defaultVariableName_3 = this.data.getDefaultVariableName(dataInterchange);
+    _builder.append(_defaultVariableName_3, "\t\t");
+    _builder.append(".run();");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("});");
     return _builder;
   }
   
-  public CharSequence doBroadcast(final String identifier, final ActionButton action, final ActionToolbar toolbar, final String packageFQN) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("log.debug(\"action execute called for ");
-    String _name = action.getName();
-    _builder.append(_name, "");
-    _builder.append("\");");
-    _builder.newLineIfNotEmpty();
-    _builder.append("String uuid = (String)eclipseContext.get(\"");
-    String _name_1 = toolbar.getName();
-    _builder.append(_name_1, "");
-    _builder.append("_TOOLBAR_ID\");");
-    _builder.newLineIfNotEmpty();
-    _builder.append("eventBroker.send(EventBrokerMsg.ACTION_BUTTON_EXECUTE_PREFIX+\"");
-    String _name_2 = toolbar.getName();
-    _builder.append(_name_2, "");
-    _builder.append("Action\"+uuid, new EventBrokerMsg(-1, \"");
-    _builder.append(identifier, "");
-    _builder.append("\", ");
-    {
-      boolean _or = false;
-      FunctionLibraryGroup _group = action.getGroup();
-      boolean _equals = Objects.equal(_group, null);
-      if (_equals) {
-        _or = true;
-      } else {
-        FunctionLibraryFunction _executeparameter = action.getExecuteparameter();
-        boolean _equals_1 = Objects.equal(_executeparameter, null);
-        _or = _equals_1;
-      }
-      if (_or) {
-        _builder.append("0L");
-      } else {
-        _builder.append(packageFQN, "");
-        _builder.append(".");
-        FunctionLibraryGroup _group_1 = action.getGroup();
-        String _name_3 = _group_1.getName();
-        String _string = _name_3.toString();
-        String _firstUpper = StringExtensions.toFirstUpper(_string);
-        _builder.append(_firstUpper, "");
-        _builder.append(".");
-        FunctionLibraryFunction _executeparameter_1 = action.getExecuteparameter();
-        String _name_4 = _executeparameter_1.getName();
-        String _string_1 = _name_4.toString();
-        _builder.append(_string_1, "");
-        _builder.append("(getContent())");
+  public String doExecute(final ActionCommand command) {
+    String actionEnumStr = null;
+    ActionType _actionType = command.getActionType();
+    boolean _matched = false;
+    if (_actionType instanceof ActionTask) {
+      _matched=true;
+      ActionType _actionType_1 = command.getActionType();
+      actionEnumStr = this.getEnumString(((ActionTask) _actionType_1).getAction()).toString();
+    }
+    if (!_matched) {
+      if (_actionType instanceof ActionSelectWorkload) {
+        _matched=true;
+        ActionType _actionType_1 = command.getActionType();
+        actionEnumStr = this.getEnumString(((ActionSelectWorkload) _actionType_1).getAction()).toString();
       }
     }
-    _builder.append("));");
-    return _builder;
-  }
-  
-  public CharSequence canExecute(final ActionButton action) {
-    CharSequence _xifexpression = null;
-    boolean _notEquals = (!Objects.equal(action, null));
-    if (_notEquals) {
-      CharSequence _xifexpression_1 = null;
-      FunctionLibraryGroup _group = action.getGroup();
-      boolean _notEquals_1 = (!Objects.equal(_group, null));
-      if (_notEquals_1) {
-        CharSequence _xblockexpression = null;
+    if (!_matched) {
+      if (_actionType instanceof ActionDialog) {
+        _matched=true;
+        ActionType _actionType_1 = command.getActionType();
+        actionEnumStr = this.getEnumString(((ActionDialog) _actionType_1).getAction()).toString();
+      }
+    }
+    if (!_matched) {
+      if (_actionType instanceof ActionReport) {
+        _matched=true;
+        ActionType _actionType_1 = command.getActionType();
+        actionEnumStr = this.getEnumString(((ActionReport) _actionType_1).getAction()).toString();
+      }
+    }
+    if (!_matched) {
+      if (_actionType instanceof ActionChart) {
+        _matched=true;
+        ActionType _actionType_1 = command.getActionType();
+        actionEnumStr = this.getEnumString(((ActionChart) _actionType_1).getAction()).toString();
+      }
+    }
+    if (!_matched) {
+      if (_actionType instanceof ActionWorkflow) {
+        _matched=true;
+        ActionType _actionType_1 = command.getActionType();
+        actionEnumStr = this.getEnumString(((ActionWorkflow) _actionType_1).getAction()).toString();
+      }
+    }
+    if (!_matched) {
+      if (_actionType instanceof ActionFunction) {
+        _matched=true;
+        actionEnumStr = "Execute";
+      }
+    }
+    if (!_matched) {
+      if (_actionType instanceof ActionUI) {
+        _matched=true;
+        ActionType _actionType_1 = command.getActionType();
+        actionEnumStr = this.getEnumString(((ActionUI) _actionType_1).getAction()).toString();
+      }
+    }
+    ActionType _actionType_1 = command.getActionType();
+    if ((_actionType_1 instanceof ActionFunction)) {
+      ActionType _actionType_2 = command.getActionType();
+      ActionFunction func = ((ActionFunction) _actionType_2);
+      boolean _isHasExecuteImmediate = func.isHasExecuteImmediate();
+      if (_isHasExecuteImmediate) {
+        StringConcatenation _builder = new StringConcatenation();
         {
-          FunctionLibraryGroup _group_1 = action.getGroup();
-          EObject _eContainer = _group_1.eContainer();
-          FunctionLibraryPackage pkg = ((FunctionLibraryPackage) _eContainer);
-          StringConcatenation _builder = new StringConcatenation();
-          {
-            FunctionLibraryGroup _group_2 = action.getGroup();
-            boolean _equals = Objects.equal(_group_2, null);
-            if (_equals) {
-              _builder.append("return true;");
-            } else {
-              _builder.append("return ");
-              QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(pkg);
-              String _string = _fullyQualifiedName.toString();
-              _builder.append(_string, "");
-              _builder.append(".");
-              FunctionLibraryGroup _group_3 = action.getGroup();
-              String _name = _group_3.getName();
-              String _string_1 = _name.toString();
-              String _firstUpper = StringExtensions.toFirstUpper(_string_1);
-              _builder.append(_firstUpper, "");
-              _builder.append(".");
-              FunctionLibraryFunction _canexecute = action.getCanexecute();
-              String _name_1 = _canexecute.getName();
-              String _string_2 = _name_1.toString();
-              _builder.append(_string_2, "");
-              _builder.append("(getContent());");
+          boolean _isHasMessage = func.isHasMessage();
+          if (_isHasMessage) {
+            _builder.append("boolean result = ");
+          }
+        }
+        EObject _eContainer = func.getActionGroup().eContainer();
+        QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((FunctionLibraryPackage) _eContainer));
+        _builder.append(_fullyQualifiedName);
+        _builder.append(".");
+        String _firstUpper = StringExtensions.toFirstUpper(func.getActionGroup().getName().toString());
+        _builder.append(_firstUpper);
+        _builder.append(".");
+        String _string = func.getExecuteImmediate().getName().toString();
+        _builder.append(_string);
+        _builder.append("(eclipseContext);");
+        _builder.newLineIfNotEmpty();
+        {
+          boolean _isHasMessage_1 = func.isHasMessage();
+          if (_isHasMessage_1) {
+            _builder.append("if(!result) {");
+            _builder.newLine();
+            _builder.append("\t");
+            _builder.append("Notification.show(");
+            EObject _eContainer_1 = func.getMessageCategory().eContainer();
+            QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(((MessagePackage) _eContainer_1));
+            _builder.append(_fullyQualifiedName_1, "\t");
+            _builder.append(".");
+            String _name = func.getMessageCategory().getName();
+            _builder.append(_name, "\t");
+            _builder.append("Message.");
+            String _firstLower = StringExtensions.toFirstLower(func.getOnFailMessage().getName());
+            _builder.append(_firstLower, "\t");
+            _builder.append("().getShowMessage(dslMetadataService, user),Notification.Type.ERROR_MESSAGE);");
+            _builder.newLineIfNotEmpty();
+            _builder.append("} ");
+            {
+              boolean _isHasSuccessMessage = func.isHasSuccessMessage();
+              if (_isHasSuccessMessage) {
+                _builder.append("else {");
+                _builder.newLineIfNotEmpty();
+                _builder.append("\t");
+                _builder.append("Notification.show(");
+                EObject _eContainer_2 = func.getMessageCategory().eContainer();
+                QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(((MessagePackage) _eContainer_2));
+                _builder.append(_fullyQualifiedName_2, "\t");
+                _builder.append(".");
+                String _name_1 = func.getMessageCategory().getName();
+                _builder.append(_name_1, "\t");
+                _builder.append("Message.");
+                String _firstLower_1 = StringExtensions.toFirstLower(func.getOnSuccessMessage().getName());
+                _builder.append(_firstLower_1, "\t");
+                _builder.append("().getShowMessage(dslMetadataService, user), Notification.Type.HUMANIZED_MESSAGE);");
+                _builder.newLineIfNotEmpty();
+                _builder.append("}");
+              }
             }
           }
-          _xblockexpression = _builder;
         }
-        _xifexpression_1 = _xblockexpression;
-      } else {
-        StringConcatenation _builder = new StringConcatenation();
-        _builder.append("return true;");
-        _xifexpression_1 = _builder;
+        return _builder.toString();
       }
-      _xifexpression = _xifexpression_1;
+      boolean _isHasExecuteLater = func.isHasExecuteLater();
+      if (_isHasExecuteLater) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        {
+          boolean _isHasStartedMessage = func.isHasStartedMessage();
+          if (_isHasStartedMessage) {
+            _builder_1.append("Notification.show(");
+            EObject _eContainer_3 = func.getMessageCategory().eContainer();
+            QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(((MessagePackage) _eContainer_3));
+            _builder_1.append(_fullyQualifiedName_3);
+            _builder_1.append(".");
+            String _name_2 = func.getMessageCategory().getName();
+            _builder_1.append(_name_2);
+            _builder_1.append("Message.");
+            String _firstLower_2 = StringExtensions.toFirstLower(func.getOnStartedMessage().getName());
+            _builder_1.append(_firstLower_2);
+            _builder_1.append("().getShowMessage(dslMetadataService, user),Notification.Type.HUMANIZED_MESSAGE);");
+            _builder_1.newLineIfNotEmpty();
+          }
+        }
+        _builder_1.append("executorService.invokeLater(eclipseContext, new Runnable() {");
+        _builder_1.newLine();
+        _builder_1.append("\t");
+        _builder_1.append("@Override");
+        _builder_1.newLine();
+        _builder_1.append("\t");
+        _builder_1.append("public void run() {");
+        _builder_1.newLine();
+        _builder_1.append("\t\t");
+        EObject _eContainer_4 = func.getActionGroup().eContainer();
+        QualifiedName _fullyQualifiedName_4 = this._iQualifiedNameProvider.getFullyQualifiedName(((FunctionLibraryPackage) _eContainer_4));
+        _builder_1.append(_fullyQualifiedName_4, "\t\t");
+        _builder_1.append(".");
+        String _firstUpper_1 = StringExtensions.toFirstUpper(func.getActionGroup().getName().toString());
+        _builder_1.append(_firstUpper_1, "\t\t");
+        _builder_1.append(".");
+        String _string_1 = func.getExecuteLater().getName().toString();
+        _builder_1.append(_string_1, "\t\t");
+        _builder_1.append("(eclipseContext);");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("\t");
+        _builder_1.append("}");
+        _builder_1.newLine();
+        _builder_1.append("});");
+        return _builder_1.toString();
+      }
     } else {
-      StringConcatenation _builder_1 = new StringConcatenation();
-      _builder_1.append("return true;");
-      _xifexpression = _builder_1;
+      if (((command.getActionType() instanceof ActionUI) && Objects.equal(((ActionUI) command.getActionType()).getAction(), UIActionEnum.NEXT_PART))) {
+        StringConcatenation _builder_2 = new StringConcatenation();
+        _builder_2.append("log.debug(\"execute next part\");");
+        _builder_2.newLine();
+        _builder_2.append("MUIElement newActivePart = E4Helper.getPart(true, getActivePart(), true);");
+        _builder_2.newLine();
+        _builder_2.append("if(newActivePart != null && newActivePart instanceof MPart) {");
+        _builder_2.newLine();
+        _builder_2.append("\t");
+        _builder_2.append("((MPart)newActivePart).getContext().activate();");
+        _builder_2.newLine();
+        _builder_2.append("}");
+        return _builder_2.toString();
+      } else {
+        if (((command.getActionType() instanceof ActionUI) && Objects.equal(((ActionUI) command.getActionType()).getAction(), UIActionEnum.PREVIOUS_PART))) {
+          StringConcatenation _builder_3 = new StringConcatenation();
+          _builder_3.append("log.debug(\"execute previous part\");");
+          _builder_3.newLine();
+          _builder_3.append("MUIElement newActivePart = E4Helper.getPart(false, getActivePart(), true);");
+          _builder_3.newLine();
+          _builder_3.append("if(newActivePart != null && newActivePart instanceof MPart) {");
+          _builder_3.newLine();
+          _builder_3.append("\t");
+          _builder_3.append("((MPart)newActivePart).getContext().activate();");
+          _builder_3.newLine();
+          _builder_3.append("}");
+          return _builder_3.toString();
+        } else {
+          StringConcatenation _builder_4 = new StringConcatenation();
+          _builder_4.append("log.debug(\"action execute called for ");
+          String _name_3 = command.getName();
+          _builder_4.append(_name_3);
+          _builder_4.append("\");");
+          _builder_4.newLineIfNotEmpty();
+          _builder_4.append("String uuid = (String)eclipseContext.get(\"");
+          _builder_4.append(IToolbarAction.TOOLBAR_UUID);
+          _builder_4.append("\");");
+          _builder_4.newLineIfNotEmpty();
+          _builder_4.append("EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.ACTION, uuid, \"");
+          QualifiedName _fullyQualifiedName_5 = this._iQualifiedNameProvider.getFullyQualifiedName(command);
+          _builder_4.append(_fullyQualifiedName_5);
+          _builder_4.append("\");");
+          _builder_4.newLineIfNotEmpty();
+          _builder_4.append("evnt.addItem(EventDispatcherDataTag.BUTTON_ID, ");
+          _builder_4.append(actionEnumStr);
+          _builder_4.append(");");
+          _builder_4.newLineIfNotEmpty();
+          {
+            ActionType _actionType_3 = command.getActionType();
+            if ((_actionType_3 instanceof ActionTask)) {
+              _builder_4.append("evnt.addItem(EventDispatcherDataTag.TASK_ID, TaskHelper.getTaskId(eclipseContext));");
+              _builder_4.newLine();
+            }
+          }
+          _builder_4.append("eventDispatcher.sendEvent(evnt);");
+          return _builder_4.toString();
+        }
+      }
     }
-    return _xifexpression;
+    return null;
   }
   
-  public CharSequence getContent(final ActionButton action) {
+  public CharSequence getEnumString(final Enumerator actionEnum) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("Context result = new Context();");
-    _builder.newLine();
-    _builder.append("result.put(Context.USER, user);");
-    _builder.newLine();
-    _builder.append("MContext context = eclipseContext.get(MContext.class);");
-    _builder.newLine();
-    _builder.append("if (context instanceof MPart && ((MPart)context).getTransientData().containsKey(\"tablePositionInfo\")) {");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("result.put(Context.TABLE, ((MPart)context).getTransientData().get(\"tablePositionInfo\"));");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("result.put(Context.TASKSUMMARY, ((MPart)context).getTransientData().get(\"taskSummary\"));");
-    _builder.newLine();
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("else if (context instanceof MTrimmedWindow) {");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("if (((MTrimmedWindow)context).getSelectedElement()!=null && ((MTrimmedWindow)context).getSelectedElement() instanceof MPerspectiveStack) {");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("MPerspectiveStack perspectiveStack = (MPerspectiveStack)((MTrimmedWindow)context).getSelectedElement();");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("if (perspectiveStack.getSelectedElement() != null && perspectiveStack.getSelectedElement() instanceof MPerspective) {");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("MPerspective perspective = (MPerspective)perspectiveStack.getSelectedElement();");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("if (perspective.getTransientData().containsKey(\"taskSummary\")) {");
-    _builder.newLine();
-    _builder.append("\t\t\t\t");
-    _builder.append("result.put(Context.TASKSUMMARY, perspective.getTransientData().get(\"taskSummary\"));");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("return result;");
+    String _simpleName = actionEnum.getClass().getSimpleName();
+    _builder.append(_simpleName);
+    _builder.append(".");
+    String _name = actionEnum.getName();
+    _builder.append(_name);
     return _builder;
   }
   
+  public String canExecute(final ActionCommand action) {
+    ActionType _actionType = action.getActionType();
+    boolean _matched = false;
+    if (_actionType instanceof ActionTask) {
+      _matched=true;
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("return TaskHelper.");
+      ActionType _actionType_1 = action.getActionType();
+      String _firstLower = StringExtensions.toFirstLower(((ActionTask) _actionType_1).getAction().getLiteral());
+      _builder.append(_firstLower);
+      _builder.append("CanExecute(eclipseContext);");
+      return _builder.toString();
+    }
+    if (!_matched) {
+      if (_actionType instanceof ActionDialog) {
+        _matched=true;
+        ActionType _actionType_1 = action.getActionType();
+        DialogActionEnum _action = ((ActionDialog) _actionType_1).getAction();
+        boolean _equals = Objects.equal(_action, DialogActionEnum.DIALOG_ACTION_SAVE);
+        if (_equals) {
+          StringConcatenation _builder = new StringConcatenation();
+          _builder.append("IE4Dialog dialog = eclipseContext.get(IE4Dialog.class);");
+          _builder.newLine();
+          _builder.append("if (dialog == null) {");
+          _builder.newLine();
+          _builder.append("\t");
+          _builder.append("return false;");
+          _builder.newLine();
+          _builder.append("}");
+          _builder.newLine();
+          _builder.append("boolean result = (boolean) ContextInjectionFactory.invoke(dialog, IsValid.class, eclipseContext);");
+          _builder.newLine();
+          _builder.append("return result;");
+          return _builder.toString();
+        } else {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("return true;");
+          return _builder_1.toString();
+        }
+      }
+    }
+    if (!_matched) {
+      if (_actionType instanceof ActionFunction) {
+        _matched=true;
+        ActionType _actionType_1 = action.getActionType();
+        EObject _eContainer = ((ActionFunction) _actionType_1).getActionGroup().eContainer();
+        FunctionLibraryPackage pkg = ((FunctionLibraryPackage) _eContainer);
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("return ");
+        String _string = this._iQualifiedNameProvider.getFullyQualifiedName(pkg).toString();
+        _builder.append(_string);
+        _builder.append(".");
+        ActionType _actionType_2 = action.getActionType();
+        String _firstUpper = StringExtensions.toFirstUpper(((ActionFunction) _actionType_2).getActionGroup().getName().toString());
+        _builder.append(_firstUpper);
+        _builder.append(".");
+        ActionType _actionType_3 = action.getActionType();
+        String _string_1 = ((ActionFunction) _actionType_3).getCanExecute().getName().toString();
+        _builder.append(_string_1);
+        _builder.append("(eclipseContext);");
+        return _builder.toString();
+      }
+    }
+    if (!_matched) {
+      if (_actionType instanceof ActionDatainterchange) {
+        _matched=true;
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("return ");
+        {
+          ActionType _actionType_1 = action.getActionType();
+          if ((_actionType_1 instanceof ActionDatainterchange)) {
+            _builder.append("(dataInterchange!=null)");
+          } else {
+            _builder.append("true");
+          }
+        }
+        _builder.append(";");
+        return _builder.toString();
+      }
+    }
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("return true;");
+    return _builder.toString();
+  }
+  
   public void infer(final EObject pkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
     if (pkg instanceof ActionPackage) {
       _infer((ActionPackage)pkg, acceptor, isPreIndexingPhase);
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionModelGenerator.java b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionModelGenerator.java
index c60fc56..9c7e1d2 100644
--- a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionModelGenerator.java
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/jvmmodel/ActionModelGenerator.java
@@ -17,39 +17,73 @@
 import com.vaadin.ui.AbstractLayout;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.Notification;
 import com.vaadin.ui.Panel;
 import com.vaadin.ui.UI;
 import com.vaadin.ui.VerticalLayout;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.lang.reflect.Method;
+import java.util.HashMap;
 import java.util.Locale;
-import java.util.concurrent.Executors;
+import java.util.Map;
+import java.util.Properties;
+import java.util.UUID;
 import javax.inject.Inject;
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
 import org.eclipse.e4.core.di.extensions.EventUtils;
 import org.eclipse.e4.core.services.translation.TranslationService;
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.commands.MBindingContext;
+import org.eclipse.e4.ui.model.application.commands.MBindingTable;
+import org.eclipse.e4.ui.model.application.commands.MCommand;
+import org.eclipse.e4.ui.model.application.commands.MHandler;
+import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
+import org.eclipse.e4.ui.model.application.commands.impl.CommandsFactoryImpl;
 import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.MUIElement;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
 import org.eclipse.e4.ui.model.application.ui.advanced.MPerspectiveStack;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow;
 import org.eclipse.e4.ui.model.application.ui.menu.ItemType;
-import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
 import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.core.api.persistence.IPersistenceService;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
-import org.eclipse.osbp.persistence.IPersistenceService;
+import org.eclipse.osbp.preferences.ProductConfiguration;
+import org.eclipse.osbp.runtime.common.annotations.IsValid;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
+import org.eclipse.osbp.ui.api.contextfunction.ICommandsProvider;
+import org.eclipse.osbp.ui.api.e4.IE4Dialog;
+import org.eclipse.osbp.ui.api.e4.IE4Focusable;
+import org.eclipse.osbp.ui.api.e4.IE4Table;
+import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
-import org.eclipse.osbp.utils.theme.EnumCssClass;
+import org.eclipse.osbp.vaaclipse.api.VaadinExecutorService;
+import org.eclipse.osbp.xtext.action.ChartActionEnum;
+import org.eclipse.osbp.xtext.action.DatainterchangeActionEnum;
+import org.eclipse.osbp.xtext.action.DialogActionEnum;
+import org.eclipse.osbp.xtext.action.ReportActionEnum;
+import org.eclipse.osbp.xtext.action.SelectWorkloadActionEnum;
+import org.eclipse.osbp.xtext.action.TaskActionEnum;
+import org.eclipse.osbp.xtext.action.WorkflowActionEnum;
+import org.eclipse.osbp.xtext.action.common.E4Helper;
+import org.eclipse.osbp.xtext.action.common.TaskHelper;
 import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
 import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
-import org.eclipse.osbp.xtext.functionlibrarydsl.util.Library;
 import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
 import org.eclipse.xtext.generator.IFileSystemAccess;
 import org.eclipse.xtext.xbase.compiler.GeneratorConfig;
 import org.eclipse.xtext.xbase.compiler.ImportManager;
 import org.eclipse.xtext.xbase.compiler.output.TreeAppendable;
-import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
 import org.eclipse.xtext.xbase.lib.Extension;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.service.event.Event;
@@ -58,23 +92,20 @@
 public class ActionModelGenerator extends I18NModelGenerator {
   @Inject
   @Extension
-  private JvmTypesBuilder _jvmTypesBuilder;
-  
-  @Inject
-  @Extension
   private BasicDslGeneratorUtils _basicDslGeneratorUtils;
   
+  @Override
   public TreeAppendable createAppendable(final EObject context, final ImportManager importManager, final GeneratorConfig config) {
     TreeAppendable _xblockexpression = null;
     {
-      Resource _eResource = context.eResource();
-      this.setBuilder(_eResource);
-      this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, Event.class, EventUtils.class, MToolBar.class, MenuFactoryImpl.class, ItemType.class, VerticalLayout.class, Panel.class, CssLayout.class, Component.class, AbstractLayout.class, MDirectToolItem.class, MContext.class, MTrimmedWindow.class, MPerspectiveStack.class, MPerspective.class, MPart.class, Method.class, EventBrokerMsg.class, FrameworkUtil.class, UI.class, Locale.class, TranslationService.class, IThemeResourceService.class, IThemeResourceService.ThemeResourceType.class, EnumCssClass.class, IPersistenceService.class, WorkerThreadRunnable.class, Executors.class, Library.Context.class);
+      this.setBuilder(context.eResource());
+      this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, Event.class, EventUtils.class, MToolBar.class, MenuFactoryImpl.class, ItemType.class, VerticalLayout.class, Panel.class, CssLayout.class, Component.class, AbstractLayout.class, MHandledToolItem.class, MContext.class, MTrimmedWindow.class, MPerspectiveStack.class, MPerspective.class, MPart.class, Method.class, EventBrokerMsg.class, FrameworkUtil.class, UI.class, Locale.class, TranslationService.class, IThemeResourceService.class, IThemeResourceService.ThemeResourceType.class, EnumCssClass.class, IPersistenceService.class, WorkerThreadRunnable.class, EventDispatcherEvent.class, EventDispatcherEvent.EventDispatcherCommand.class, EventDispatcherEvent.EventDispatcherDataTag.class, DialogActionEnum.class, ReportActionEnum.class, TaskActionEnum.class, SelectWorkloadActionEnum.class, ChartActionEnum.class, WorkflowActionEnum.class, DatainterchangeActionEnum.class, IOException.class, File.class, FileInputStream.class, Properties.class, ProductConfiguration.class, PrintWriter.class, StringWriter.class, ContextInjectionFactory.class, IsValid.class, IE4Dialog.class, IE4Table.class, IE4Focusable.class, Focus.class, MUIElement.class, CommandsFactoryImpl.class, MApplication.class, MBindingTable.class, MBindingContext.class, MKeyBinding.class, MCommand.class, MHandler.class, UUID.class, ICommandsProvider.class, HashMap.class, Map.class, TaskHelper.class, E4Helper.class, Notification.class, Notification.Type.class, VaadinExecutorService.class);
       _xblockexpression = super.createAppendable(context, importManager, config);
     }
     return _xblockexpression;
   }
   
+  @Override
   public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
     super.doGenerate(input, fsa);
   }
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/scoping/.gitignore b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/scoping/.gitignore
new file mode 100644
index 0000000..cb0e43e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/scoping/.gitignore
@@ -0,0 +1,2 @@
+/ActionDSLScopeProvider.java
+/ActionScopeProvider.java
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/validation/.gitignore b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/validation/.gitignore
new file mode 100644
index 0000000..01c3b59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/validation/.gitignore
@@ -0,0 +1 @@
+/ActionDSLValidator.java
diff --git a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/validation/ActionDSLValidator.java b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/validation/ActionDSLValidator.java
index 6687bc0..71beba6 100644
--- a/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/validation/ActionDSLValidator.java
+++ b/org.eclipse.osbp.xtext.action/xtend-gen/org/eclipse/osbp/xtext/action/validation/ActionDSLValidator.java
@@ -1,26 +1,55 @@
 /**
- * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- * 
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- * 
- *  Contributors:
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- * 
- *  This copyright notice shows up in the generated Java code
+ * generated by Xtext 2.11.0
  */
 package org.eclipse.osbp.xtext.action.validation;
 
+import org.eclipse.osbp.runtime.common.keystroke.KeyCodeUtil;
+import org.eclipse.osbp.xtext.action.ActionCommand;
+import org.eclipse.osbp.xtext.action.ActionDSLPackage;
 import org.eclipse.osbp.xtext.action.validation.AbstractActionDSLValidator;
+import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.xbase.lib.Conversions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
 
 /**
- * Custom validation rules.
+ * This class contains custom validation rules.
  * 
- * see http://www.eclipse.org/Xtext/documentation.html#validation
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation
  */
 @SuppressWarnings("all")
 public class ActionDSLValidator extends AbstractActionDSLValidator {
+  public final static String INVALID_KEY = "invalidKey";
+  
+  @Check
+  public void checkKeyBinding(final ActionCommand command) {
+    boolean _isHasKeyBinding = command.isHasKeyBinding();
+    if (_isHasKeyBinding) {
+      boolean error = false;
+      String[] parts = command.getKeyBinding().split(" ");
+      for (final String part : parts) {
+        {
+          final String[] _converted_parts = (String[])parts;
+          boolean _equals = part.equals(IterableExtensions.<Object>last(((Iterable<Object>)Conversions.doWrapArray(_converted_parts))));
+          if (_equals) {
+            Integer _keyLookupInteger = KeyCodeUtil.keyLookupInteger(part);
+            boolean _equals_1 = ((_keyLookupInteger).intValue() == 0);
+            if (_equals_1) {
+              error = true;
+            }
+          } else {
+            int _modifierLookup = KeyCodeUtil.modifierLookup(part);
+            boolean _equals_2 = (_modifierLookup == 0);
+            if (_equals_2) {
+              error = true;
+            }
+          }
+          if (error) {
+            this.warning("Invalid key given for keyBinding. Modifier must be one of CTRL ALT SHIFT, Keys separated by blanks", 
+              ActionDSLPackage.Literals.ACTION_COMMAND__KEY_BINDING, 
+              ActionDSLValidator.INVALID_KEY);
+          }
+        }
+      }
+    }
+  }
 }
diff --git a/pom.xml b/pom.xml
index 5c032fb..e9147b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,7 @@
 
     <modules>
         <module>org.eclipse.osbp.xtext.action</module>
+        <module>org.eclipse.osbp.xtext.action.ide</module>
         <module>org.eclipse.osbp.xtext.action.ui</module>
         <module>org.eclipse.osbp.xtext.action.tests</module>
         <module>org.eclipse.osbp.xtext.action.feature</module>
@@ -94,4 +95,13 @@
             </plugins>
         </pluginManagement>
     </build>
+    <dependencies>
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>
+				org.eclipse.osbp.dependencies.bundle.activemq.all.osgi
+			</artifactId>
+			<version>5.14.5-SNAPSHOT</version>
+		</dependency>
+    </dependencies>
 </project>